Идентификатор потерян, несмотря на левое соединение - PullRequest
0 голосов
/ 06 мая 2018

Я использую 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 голосов
/ 06 мая 2018

Вероятно, это связано с тем, что оба столбца Product и manufacturers имеют столбец id, поэтому один из них перезаписывается.

Вместо использования левого соединения вы можете использовать метод with в eloquent.

Если ваши отношения и структура класса настроены правильно , вы сможете получить доступ к таким продуктам Manufacturer, как это:

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

Также обратите внимание, что имена классов всегда должны быть в единственном числе и начинаться с заглавной буквы в laravel. App\manufacturers Не должно быть действительным. Пожалуйста, прочитайте статью о том, как установить красноречивые отношения, на которую я ссылался выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...