Laravel渴望加载与其他桌子上的连接

时间:2017-06-23 14:36:51

标签: php laravel laravel-5 inner-join eager-loading

我可以将此代码更改为has_many或has_one或...的语法以编写漂亮的代码吗?

\App\User::with(['books' => function ($query) {
    $query->join('locations','books.location_id','=','locations.id')
    ->select([
        'books.*',
        'locations.name as l_name'
    ]);
}])->get()

班级用户:

public function books()
{
    return $this->hasMany(Book::class);
}

2 个答案:

答案 0 :(得分:5)

你应该只有一个与Book模型有关系的Locations模型,并按如下方式调用它:

User::with('books.locations')->get();

这将为用户提供每本书的书籍和位置。

答案 1 :(得分:0)

我想你可以试试这个:

DB::table('users')
->select('books.*','locations.name as l_name')
->join('books','users.id','=','books.user_id')
->join('locations','books.id','=','locations.book_id')
->get();

希望这对你有帮助!