我有一张三张桌vendor
banquet
project
,
这种关系如下所述:
* vendor
有多个banquet
和project
class Vendor extends Model
{
.....
public function project()
{
return $this->hasMany('App\Entities\Project' ,'vendorId' ,'id');
}
public function banquet()
{
return $this->hasMany('App\Entities\Banquet' ,'vendorId' ,'id');
}
}
* banquet
belongsTo vendor
class Banquet extends Model
{
...
public function vendor()
{
return $this->belongsTo('App\Entities\Vendor' ,'vendorId' ,'id');
}
}
* project
belongsTo vendor
class Project extends Model
{
...
public function vendor()
{
return $this->belongsTo('App\Entities\Vendor' ,'vendorId' ,'id');
}
}
在某些情况下,我只有banquet.id
可以找到banquet
数据和
同时,需要在查询中获取所有相同的vendorId project
数据。
如何定义project
和banquet
之间的新关系?或任何想法可以在一次查询中找到两种数据?
答案 0 :(得分:3)
您可以尝试:
$banquet = Banquet::where('id', $banquet_id)->with('vendor.project')->first();
然后获取所有相同的vendorId project
数据:
$banquet->vendor->project;
它给出了项目的集合。
OR
您可以使用has-many-through
关系来访问project
模型中的banquet
。
为此,在Banquet.php
class
public function project()
{
return $this->hasManyThrough('App\Entities\Project', 'App\Entities\Banquet');
}
然后您的查询将如下:
$banquet = Banquet::where('id', $banquet_id)->with('project')->first();
$banquet->project;