Laravel 5关系属于
Laravel 5 relationship between to belong
我有三个tablevendor
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
属于 vendor
class Banquet extends Model
{
...
public function vendor()
{
return $this->belongsTo('App\Entities\Vendor' ,'vendorId' ,'id');
}
}
*project
属于vendor
class Project extends Model
{
...
public function vendor()
{
return $this->belongsTo('App\Entities\Vendor' ,'vendorId' ,'id');
}
}
在某些情况下,我只有 banquet.id
可以找到 banquet
数据和
同时,需要在查询中获取所有相同的vendorId project
数据。
如何定义 project
和 banquet
之间的新关系?或者任何想法都可以在一次查询中找到这两种数据?
你可以试试:
$banquet = Banquet::where('id', $banquet_id)->with('vendor.project')->first();
然后获取所有相同的 vendorId project
数据作为:
$banquet->vendor->project;
给出项目合集
或
您可以使用 has-many-through
关系从 banquet
模型访问 project
。
为此,在 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;
我有三个tablevendor
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
属于 vendor
class Banquet extends Model
{
...
public function vendor()
{
return $this->belongsTo('App\Entities\Vendor' ,'vendorId' ,'id');
}
}
*project
属于vendor
class Project extends Model
{
...
public function vendor()
{
return $this->belongsTo('App\Entities\Vendor' ,'vendorId' ,'id');
}
}
在某些情况下,我只有 banquet.id
可以找到 banquet
数据和
同时,需要在查询中获取所有相同的vendorId project
数据。
如何定义 project
和 banquet
之间的新关系?或者任何想法都可以在一次查询中找到这两种数据?
你可以试试:
$banquet = Banquet::where('id', $banquet_id)->with('vendor.project')->first();
然后获取所有相同的 vendorId project
数据作为:
$banquet->vendor->project;
给出项目合集
或
您可以使用 has-many-through
关系从 banquet
模型访问 project
。
为此,在 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;