Laravel eloquent получает данные из двух таблиц - PullRequest
0 голосов
/ 11 сентября 2018

Laravel Eloquent Проблема построителя запросов

Здравствуйте, у меня проблема, когда я пытаюсь получить все строки, где slug = $slug.

Поясню более подробно:

У меня есть две таблицы, карты и карты_категории.

cards has category_id.
card_categories has slug.

Мне нужен запрос, который возвращает все карточки, которые содержат слагов.

Например, я сделал это:

$cards = Card::leftJoin('card_categories', 'cards.id', '=', 'card_categories.id')
        ->select('cards.*', 'card_categories.*')
        ->where('card_categories.slug', $slug)
        ->paginate(5);

Но что происходит, так это просто вернуть по 1 строке на категорию.

Я не знаю, что не так.

Большое спасибо.

1 Ответ

0 голосов
/ 11 сентября 2018

Мне кажется, я понимаю, что вы имеете в виду, исходя из вашего объяснения, я бы предположил, что модель вашей карты выглядит следующим образом.

class Card extends Model {
    protected $table = 'cards';

    public function category()
    {
        return $this->belongsTo(Category::class)
    }
}

В этом случае вы должны просто сделать это:

$cards = Card::whereHas('category', function ($query) use ($slug) {
    $query->where('slug', $slug);
})->paginate(5);

Выбирает все карты с идентификатором категории данного слага.

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