现象:Article::query()->with('user')->join('details','articles.id','=','details.article_id')->where('details.content','like','%test%')->get();
问题:这样写会导致model中article表的id被details表中的id覆盖,with的时候user原本关联的是article表的ID,此时确错误的关联了details表中的ID,导致数据错乱。
解决办法:指定ID字段,或放弃join,改用子查询
->select(['articles.id',....])
->whereIn(Detail::query()->where('content','like','%test%')->pluck('id'))
网友评论