Как запросить базу данных отношений в Laravel? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть этот поисковый запрос для модели Поста в Laravel:

return $q ->where('title', 'like', '%'.$keyword.'%')

Который работает совершенно нормально. В моей модели Post у меня также есть база данных отношений categories. Это доступно как объект в моем возвращенном почтовом объекте.

Есть ли способ запросить category -> name?

Я пытался: return $q ->where('category->name', 'like', '%'.$keyword.'%')

Ответы [ 3 ]

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

Я считаю, что то, что вы ищете, можно найти здесь: https://laravel.com/docs/5.6/eloquent-relationships#querying-relations

В вашем случае вы должны убедиться, что у вас есть отношения, установленные в вашей модели Post. Если это установлено, ваш запрос должен выглядеть примерно так:

return $q->where('title', 'like', '%'.$keyword.'%')->whereHas('category', 
function ($query) use ($keyword) {
    $query->where('name', 'like', '%'.$keyword.'%');
})->get();

Надеюсь, это поможет!

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

Я предполагаю, что у вас есть Модели :

  1. Сообщение * * 1006
  2. Категория

Кроме того, у вас есть category_id в качестве внешнего ключа в модели Post. Это базовая структура.

Я предполагаю, что вы хотите искать сообщения и категории одновременно, чтобы вы могли сделать что-то вроде этого:

return Post::leftJoin('categories', 'posts.category_id', '=', 'categories.id)
    ->where('categories.name', 'like', '%' . $keyword . '%')
    ->orWhere('posts.title', 'like', '%' . $keyword . '%')
    ->get();
0 голосов
/ 04 мая 2018

Если ваш db хорошо структурирован - тогда вы захотите использовать ORM Laravel для этого материала.

https://laravel.com/docs/5.6/eloquent#introduction

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