SQLSTATE [42S22]: (SQL: выберите * из «категорий», где «категории» .departement_id` = 1 и «категорий». - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь выбрать все категории конкретного департамента.

class Test extends Controller
{
    public  function test(){

        $depts=Departement::find(1)->categories;

        foreach ($depts as $dept){
            echo $dept->name;
        }

        return view('test');

    }

}

1 Ответ

0 голосов
/ 17 мая 2019

Быстрый поиск в Google говорит мне, что SQLSTATE [42S22] - это код для «Столбец не найден». Когда вы звоните Departement::find(1)->categories, Eloquent делает 2 запроса

  1. Получить THE Department, если первичный ключ равен 1
  2. Получить ВСЕ категории, где их атрибут departement_id равен 1

Учитывая запрос в вашей ошибке

select * from `categories` where `categories`.`departement_id` = 1 and `categories`.`departement_id` is not null)

Понятно, что в вашей таблице categories нет столбца departement_id.

Если в таблице категорий нет столбца departement_id

Либо:

  • Добавьте его в миграцию.
  • Добавьте его непосредственно в БД, если вы не работаете с миграциями

Если вы хотите, чтобы другой столбец выступал в качестве внешнего ключа

обновите метод отношений, чтобы отразить это.

https://laravel.com/docs/5.8/eloquent-relationships

...