我有3个桌子,我希望通过另一个使用雄辩的
加入其中的两个ProductGroup table
--------------------------
| ProductGroupId | Name |
-------------------------
| 1 | Test1 |
| 2 | Test2 |
--------------------------
ProductLine table
-------------------------------------------------
| ProductLineId | ProductGroupId | Name |
------------------------------------------------|
| 1 | 1 | AnotherTest1 |
| 2 | 1 | AnotherTest2 |
-------------------------------------------------
ProductType table
----------------------------------------------
| ProductTypeId | ProductLineId | Name |
---------------------------------------------|
| 1 | 1 | Something1 |
| 2 | 1 | Something2 |
----------------------------------------------
我想加入ProductGroup与ProductType
我尝试使用它作为我的ProductGroup模型(不确定我是否正确完成了hasManyThrough())
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class ProductGroup extends Model
{
protected $primaryKey = 'ProductGroupId';
public $timestamps = false;
public function producttype()
{
return $this->hasManyThrough('App\ProductGroup', 'App\ProductLine', 'ProductGroupId', 'ProductGroupId');
}
}
我想在ProductGroup表中加入特定id的2个表,所以在SQL中它实际上是
SELECT * FROM ProductType pt
INNER JOIN ProductLine pl ON
pt.ProductLineId = pl.ProductLineId
INNER JOIN ProductGroup pg ON
pg.ProductGroupId = pl.ProductGroupId
WHERE pg.ProductGroupId = 3
我试过这个但是没有结果
我可以在查询构建器中执行此操作,但如果可以帮助我,请使用eloquent
$test = ProductGroup::with('producttype')->whereHas('producttype', function ($query) {
$query->where('ProductGroup.ProductGroupId', 3);
})->get();
答案 0 :(得分:1)
更改
public function producttype()
{
return $this->hasManyThrough('App\ProductGroup', 'App\ProductLine',
'ProductGroupId', 'ProductGroupId');
}
到
public function producttype()
{
return $this->hasManyThrough('App\ProductType', 'App\ProductLine', 'ProductGroupId', 'ProductLineId');
}