我是3实体:
Owner
-id
Car
-id
-owner_id
-brand_id
Brand
-id
我想检索brand
cars
的所有owner
。
现在,如果我在Owner
班级
$this->cars()->with('brand');
我收到Database/Eloquent/Collection
这样的内容:
Illuminate\Database\Eloquent\Collection {
all: [
App\Car {
id: 1,
owner_id: 10,
brand_id: 100,
brand: App\Brand {
id: 100
},
},
App\Car {
id: 2,
owner_id: 10,
brand_id: 200,
brand: App\Brand {
id: 200
},
},
App\Car {
id: 3,
owner_id: 10,
brand_id: 100,
brand: App\Brand {
id: 100
},
},
],
}
但我希望有这样的结构:
Illuminate\Database\Eloquent\Collection {
all: [
App\Brand {
id: 100
},
App\Brand {
id: 200
},
}
有可能以某种方式吗?
答案 0 :(得分:1)
您可以在hasManyThrough
型号上使用Owner
关系。
例如:
public function brands()
{
return $this->hasManyThrough(Brand::class, Car::class);
}
答案 1 :(得分:0)
有两种选择,
简单示例(您可能需要将列名设置为参数。);
public function brands() {
return $this->hasManyThrough(Brand::class, Car::class);
}
你也可以使用belongsToMany,如果你的二级表上没有外键(听起来不太好,但它有效)。
请注意,第二个参数应替换为Car table的名称。
public function brands(){
return $this->belongsToMany(Brand::class, 'cars', 'owner_id', 'brand_id');
}