尽管离开加入,身份证丢失

时间:2018-05-06 19:49:41

标签: php mysql laravel

我正在使用left join根据公共列合并两个表,但我似乎丢失了左表中的主键id。返回每个其他列

我的控制器:

$prod_manu = $request->prod_manu;


     return $data  = Product::leftJoin('manufacturers','products.Manufacturer_id','=','manufacturers.id')
    ->where('products.Manufacturer_id',$prod_manu)
    ->get();

产品型号:

class Product extends Model{   

public function types(){
    return $this->belongsTo('App\types','Type_id');
}

public function manufacturers(){
    return $this->belongsTo('App\manufacturers','Manufacturer_id');
  } 
}

1 个答案:

答案 0 :(得分:1)

这可能是因为Productmanufacturers都有id列,因此其中一列会被覆盖。

您可以使用eloquent的with方法,而不是使用左连接。

如果你有自己的关系和班级结构setup properly,你应该可以访问Manufacturer这样的产品:

$manufacturer = Manufacturer::where('id', $prod_manu)->with('products')->get();
return $manufacturer->products;

另请注意,班级名称应始终为单数,并以laravel中的大写字母开头。 App\manufacturers不应该有效。请阅读我上面提到的关于建立你雄辩关系的文章。