ThinkPHP 6 关联模型删除时提示:没有条件不会执行删除操作

在 ThinkPHP 中模型关联删除官方文档只提到了主子表数据一起删除的方法。
即使用together方法,但在不删除主表只删除子表的时候遇到问题了。

正常执行(TP5)

以下代码在 TP 5.0.24 中是可以正常删除子表数据的:


namespace app\index\controller;

use app\common\model\Article;

class Index
{
    public function index()
    {
        $data = Article::get(1, ['image']);
        $data->image()->delete();
        return json($data);
    }
}

问题代码(TP6)

而到了 TP 6 代码有点变化,但基本是一样的操作,却会报错:

没有条件不会执行删除操作


namespace app\controller;

use app\BaseController;
use app\model\Article;

class Index extends BaseController
{
    public function index()
    {
        $data = Article::with(['image'])->find(1);
        $data->image()->delete();
        return json($data);
    }
}

报错详情

ThinkPHP 6 关联模型删除时提示:没有条件不会执行删除操作_第1张图片

解决方案

说实话我认为这是 bug,临时我的方案是

$data->image->delete();

参考链接

TP官网讨论:http://www.thinkphp.cn/topic/68775.html

你可能感兴趣的:(PHP)