Php laravel中的多个左连接雄辩

Php laravel中的多个左连接雄辩,php,mysql,sql,laravel,eloquent,Php,Mysql,Sql,Laravel,Eloquent,我试着去理解左派的雄辩,但我真的无法让它发挥作用 我的常规SQL如下所示: SELECT uploads.id, comments.file_id, comments.comment, users.id, comments.user, users.name FROM uploads LEFT JOIN comments ON uploads.id=comments.file_id LEFT JOIN users ON users.id=comments.user; 有人能帮我把这个转化成一个有

我试着去理解左派的雄辩,但我真的无法让它发挥作用

我的常规SQL如下所示:

SELECT uploads.id, comments.file_id, comments.comment, users.id, comments.user, users.name
FROM uploads
LEFT JOIN comments
ON uploads.id=comments.file_id
LEFT JOIN users
ON users.id=comments.user;
有人能帮我把这个转化成一个有说服力的问题吗?也许可以提供一些信息,它是怎么做到的

谢谢D

$comments = DB::table('comments')
                ->leftJoin('users', 'users.id', '=', 'comments.id')
                ->leftJoin('uploads', 'uploads.id', '=', 'comments.file_id')
                ->get();

这就是答案,让它工作了,无论如何谢谢

Eloquent不执行SQL连接,而是用大量查询来模拟它

通过以下操作,您将获得您想要的:

Uploads::with('commments','users')
    ->get(['id','comments.file_id',' comments.comment', 'users.id', 'comments.user', 'users.name']);
使用它,您需要解释模型中的关系。检查文档

另一种方法是使用查询生成器。你不是在用雄辩来做这件事,但当然会奏效:

DB::table('uploads')
    ->select('uploads.id','comments.file_id',' comments.comment', 'users.id', 'comments.user', 'users.name')
    ->leftJoin('comments','uploads.id','=','comments.file_id')
    ->leftJoin('users','users.id','=','comments.user')
    ->get();

$comments=DB::table('comments')->leftJoin('users','users.id','=','comments.id')->leftJoin('uploads','uploads.id','=','comments.file_id')->get()--编辑:工作正常,谢谢!谢谢你,我决定走querybuilder的路,现在我有另一个简短的问题。如何从一行中选择1个值?例如,只有id?get('id')给了我一个错误。这就是我目前所拥有的:$id=DB::table('uploads')->where('file','like',$file.'%')->get('id');编辑到您的新问题。对所需字段使用
选择(…)
。如果只需要第一行中的一个值,请改用
value('uploads.id')
。这里有更多信息:
DB
不是
雄辩的
雄辩的
不应该做
连接
。你必须依靠模特的关系。