Laravel 5关系属于

Laravel 5 relationship between to belong

我有三个tablevendorbanquetproject, 关系如下描述:
* vendor 有许多 banquetproject

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数据。

如何定义 projectbanquet 之间的新关系?或者任何想法都可以在一次查询中找到这两种数据?

你可以试试:

$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;