Laravel - SQL-запрос приравнивает значение id к нулю во многих отношениях со многими - PullRequest
0 голосов
/ 13 июня 2018

В модели у меня есть:

class Car extends Model
{
    public function users()
    {
        return $this->belongsToMany(User::class, 'car_user', 'car_id', 'user_id');
    }
}

И в моем контроллере у меня есть:

\DB::enableQueryLog();
$cars = Car::with('users')->get();
dd(\DB::getQueryLog());

Выполнены следующие запросы:

array:2 [▼
  0 => array:3 [▼
    "query" => "select * from `cars`"
    "bindings" => []
    "time" => 0.62
  ]
  1 => array:3 [▼
    "query" => "select `users`.*, `car_user`.`user_id` as `pivot_user_id`, `car_user`.`car_id` as `pivot_car_id` from `users` inner join `car_user` on `users`.`user_id` = `car_user`.`car_id` where `car_user`.`user_id` in (?)"
    "bindings" => array:1 [▼
      0 => null
    ]
    "time" => 0.6
  ]
]

Проблема в том,что значение bindings во втором запросе равно нулю.Я хочу получить все cars, пройтись по каждому из них и получить столько пользователей, сколько имеется у каждого автомобиля.

Как я могу это сделать?

Редактировать схема таблицы:

car_user: car_id user_id

автомобили: car_id цена_кода

пользователи: user_id user_type имя пользователя пароль

Спасибо

1 Ответ

0 голосов
/ 14 июня 2018

Поскольку вы используете настраиваемые первичные ключи, вы должны указать их в своих моделях:

class Car extends Model
{
    protected $primaryKey = 'car_id';
}

class User extends Model
{
    protected $primaryKey = 'user_id';
}
...