Php 尽管我离开了,我还是输了

Php 尽管我离开了,我还是输了,php,mysql,laravel,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_

我使用
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');
  } 
}

这可能是因为
产品
制造商
都有一个
id
列,所以其中一个会被覆盖

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

如果您有关系和类结构,您应该能够访问
制造商的产品,如下所示:

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

还请注意,类名应始终为单数,并以laravel中的大写字母开头<代码>应用程序\制造商
不应有效。请阅读我上面链接的关于建立雄辩关系的文章。

第二个表中的条件需要放在
on
子句中,而不是
where
子句中。我编辑了我的关系定义,这似乎解决了问题。非常感谢。