繁体   English   中英

Laravel中具有两个或多个外键的表

[英]Tables with two or more foreign keys in Laravel

我的应用程序中有三个数据库表。 举例来说,这就是我现在所拥有的:

items TABLE: id, quantity, price, month_id (FK), department_id (FK)
months TABLE: id, month
department TABLE: id, department

我已经在模型上定义了hasManybelongsTo关系。 有了这些关系,我就能执行查询App\\Month::first()->items来检索所有第一个月的项目。 但是,如果我想同时查询月份和部门,在这种情况下最好的方法是什么?

我当然可以这样做:

$month = App\Month::first();
$month->items()->where('department_id', '3')->get();

有没有更优雅的方式来执行此查询?

首先,您可以告诉Eloquent急于加载所需的关系以获得更好的性能。 您可以使用with()方法并定义所有需要的关系来完成此操作-有关更多详细信息,请参见http://laravel.com/docs/5.0/eloquent#eager-loading

此外,如果要在加载的关系上应用一些其他条件,则可以使用with方法相同,但是要使用不同的语法来定义关系和条件:

$users = User::with(['posts' => function($query)
{
    $query->where('title', 'like', '%first%');

}])->get(); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM