Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 18.10.2021 22:40:34

Запрос к БД

Всем привет!
Друзья, подскажите как правильно сформировать запрос?
есть таблицы tables1 и tables2 в tables2 хранится tables1_id
<input name="search_name">
делаю поиск в столбце name из tables1, необходимо сделать выборку строк из tables2, где id из tables1 = tables1_id
мой нерабочий код ниже
        $tables2Query = Tables2 ::query();
        $tables1Query = Tables1::query();

        if ($request->filled('search_name')){
            $tables1QueryId = $tables1Query->pluck('id')->where('name', 'LIKE', '%'.$request->search_name.'%');
            $tables2Query->where('tables1_id', $tables1QueryId );
        }

laravel ver. 5.8

Не в сети

#2 19.10.2021 17:38:07

Re: Запрос к БД

добавь в модель tables1 отношение 'tables2' hasMany для tables2 и достаточно будет 1 запроса

 if ($request->filled('search_name')){
     $query = Tables1::query()->with('tables2')->where('name', 'LIKE', '%'.$request->search_name.'%')->get();
     $result = $query->tables2; //тут ваши записи
        }

Не в сети

#3 07.11.2021 14:52:32

Re: Запрос к БД

Привет.
Получается прописал в модели tables1
    public function tables2()
    {
      return $this->hasMany(Table2::class, 'tables1_id', 'id')->get();
    }

В котроллере
        if ($request->filled('search_name')){
            $queryTables1 = Table1::query()
                ->with('tables2')
                ->where('name', 'LIKE', '%'.$request->search_name.'%')
                ->get();
            $tables2Query= $queryTables1->tables2();
        }

ошибка
Method Illuminate\Database\Eloquent\Collection::addEagerConstraints does not exist.

что не так?

Не в сети

#4 08.11.2021 13:56:07

Re: Запрос к БД

return $this->hasMany(Table2::class, 'tables1_id', 'id')->get();

в отношении внутри модели get() не нужно

Не в сети

Подвал раздела