我想获得存在的color_code.code和manufacturer_bundle.name的所有独特组合。它们通过表制造商连接
这是我目前的代码。
$color_codes = ColorCode::select(['color_code.code', 'manufacturer_bundle.name'])->distinct()
->leftJoin('manufacturer_bundle', 'color_code.manufacturer_id' , '=' , 'manufacturer_bundle.id')
->get();
问题,就是,select只返回那些字段,而不是实际的模型。所以我希望能够做到这一点:
$color_code->manufacturer->name
给了我
尝试获取非对象的属性
完整性:
的ColorCode:
Schema::create('color_code', function (Blueprint $table) {
$table->increments('id');
$table->string('code');
$table->index('code');
$table->integer('manufacturer_id');
$table->index('manufacturer_id');
$table->timestamps();
});
制造商
Schema::create('manufacturer', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->index('name');
$table->integer('manufacturer_bundle_id')->nullable();
$table->index( 'manufacturer_bundle_id');
$table->timestamps();
});
答案 0 :(得分:0)
只有雄辩的对象才能拥有关系,而不是集合。
您的查询结果是集合,而不是Eloquent对象,因为您要组合两个表。所以当然你不能继承"数据组合的模型关系。您必须创建一个新模型,用于将颜色代码与制造商链接以使其工作,或者手动从指定数据集中找到ColorCode:
fplus::enumerate(fplus::transform(f, xs));
答案 1 :(得分:0)
我认为您可以使用hasManyThrough
关系。 Laravel Has Many Through
在ColorCode
模型中添加以下方法以定义hasManyThrough关系。
注意:假设您有ManufacturerBundle
表格manufacturer_bundle
和Manufacturer
manufacturer
表格。
public function manufacturer_bundle(){
return $this->hasManyThrough(ManufacturerBundle::class,Manufacturer::class);
}
现在,在您的控制器中,您可以使用以下方法来检索manufacturer_bundle
。
$color_codes = ColorCode::with('manufacturer_bundle')->get();