未找到列:1054 'on clause' 中的未知列 'comments.commenter_id'
Column not found: 1054 Unknown column 'comments.commenter_id' in 'on clause'
这是我的关系查询,我正在获取带有评论的数据,我也需要用户详细信息,但如果我喜欢下面的内容,我会收到上述错误。
$type = 'success';
$status_code = 200;
$message = 'Posts data listed.';
$response = Post::with(['associate:id,name,avatar', 'comments:id,commenter_id,commentable_id,comment,created_at'])
->join('users', 'users.id', '=', 'comments.commenter_id');
if (request()->query('search')) {
// $response = $response->where("name", "LIKE", "%" . request()->query('search') . "%");
$response = $response->search(request()->query('search'));
};
$response = $response->latest('posts.created_at')->paginate(5);
return response_data($type, $status_code, $message, $response);
当你使用->with
方法时,eloquent会在执行主查询后获取comments
(意味着Post::...->join()
),所以如果你想使用table 在你的查询中,那么你应该在相关查询中使用它。
所以在with
方法中使用join
:
Post::with('associate:id,name,avatar')
->with('comments',function ($query) {
$query
// Now you can select from users or comments
// e.g. ->select([...,'users.any_column_you_want'])
->select(['comments.id','commenter_id','commentable_id','comment','created_at'])
->join('users', 'users.id', '=', 'comments.commenter_id');
});
检查参考:Eager Loading and Constraining Eager Loads.
查看 mysql 连接参考以获得更好的理解:W3Schools Mysql Join
这是我的关系查询,我正在获取带有评论的数据,我也需要用户详细信息,但如果我喜欢下面的内容,我会收到上述错误。
$type = 'success';
$status_code = 200;
$message = 'Posts data listed.';
$response = Post::with(['associate:id,name,avatar', 'comments:id,commenter_id,commentable_id,comment,created_at'])
->join('users', 'users.id', '=', 'comments.commenter_id');
if (request()->query('search')) {
// $response = $response->where("name", "LIKE", "%" . request()->query('search') . "%");
$response = $response->search(request()->query('search'));
};
$response = $response->latest('posts.created_at')->paginate(5);
return response_data($type, $status_code, $message, $response);
当你使用->with
方法时,eloquent会在执行主查询后获取comments
(意味着Post::...->join()
),所以如果你想使用table 在你的查询中,那么你应该在相关查询中使用它。
所以在with
方法中使用join
:
Post::with('associate:id,name,avatar')
->with('comments',function ($query) {
$query
// Now you can select from users or comments
// e.g. ->select([...,'users.any_column_you_want'])
->select(['comments.id','commenter_id','commentable_id','comment','created_at'])
->join('users', 'users.id', '=', 'comments.commenter_id');
});
检查参考:Eager Loading and Constraining Eager Loads.
查看 mysql 连接参考以获得更好的理解:W3Schools Mysql Join