Laravel Eloquent всегда пополняет коллекцию с идентификатором 1 - PullRequest
0 голосов
/ 01 мая 2018

У меня есть проект на 5 уровне. Я написал SQL для выбора игр из базы данных, и после его выполнения я получил коллекцию моделей, где каждая модель имеет id = 1.

Это мой запрос:

select * from `games` left join `game_vendors` on `games`.`vendor_id` = 
`game_vendors`.`id` where `game_vendors`.`name` != 'some_vendor' and 
`games`.`id` not in (1,2,3,4,5,6,7,8,9,10,11,12);

проверил этот запрос в терминале MySQL - все в порядке, идентификаторы верны, но на почтальоне или в браузере я получил это

array(2021) {
  [0]=>
  array(32) {
    ["id"] => int(1)
  [1]=>
  array(32) {
    ["id"] => int(1)
  ...
  ...
  ...
  [24]=>
   array(32) {
    ["id"] => int(1)

Класс модели содержит это:

class Game extends Model {
protected $table = 'games';

public function vendor()
{
    return $this->hasOne('App\GameVendor', 'vendor_id', 'id');
}

1 Ответ

0 голосов
/ 01 мая 2018

Используйте Laravel Eloquent Relationship и "WHERE NOT IN"

Обновить модель как

class Game extends Model {
protected $table = 'games';

public function vendor()
{
    return $this->hasOne('App\GameVendor', 'vendor_id', 'id')->where('name', '!=' ,'some_vendor');
}

И используйте Eloquent в качестве

$games = Game::whereNotIn('id',[1,2,3,4,5,6,7,8,9,10,11,12])->get();
foreach($games as $game){
    $game->vendor->name
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...