@ortsuev33

Ошибка при попытке получить связанные данные из другой модели,как исправить?

Illuminate \ Database \ QueryException (42S22)
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'categories.article_id' in 'where clause' (SQL: select * from `categories` where `categories`.`article_id` = 1 and `categories`.`article_id` is not null limit 1)
Previous exceptions
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'categories.article_id' in 'where clause' (42S22)


Ошибка при попытке получить связанные данные из другой модели,как исправить?
$article= Article::find(1);
   $title=$article->category;

     dd($title);


----------------------------

файл article
 public function  category(){
        return $this->hasOne('App\Category');
    }

файл category
  public function  article(){
    	return $this->belongsTo('App\Article');
    }
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
Razgelday
@Razgelday
Скорее всего, у вас перепутаны родитель и дочка в отношениях.
Кроме того, у вас почему-то отношение "один-к-одному", хотя судя из названий классов (Article и Category) отношение должно быть "один-ко-многим" (одна категория может содержать много статей, а одна статья принадлежит только одной категории).

Должно быть как-то так:

// Category.php 

public function articles(){
    return $this->hasMany('App\Article');
}

// Article.php

public function category(){
    return $this->belongsTo('App\Category');
}


Тогда структура БД должна быть такая:

categories:
   - id
   - name
   - slug

articles:
   - id
   - category_id
   - title
   - content


Использовать отношения можно будет так:

$article = Article::find(1); // Получаем статью с ID 1

$category = $article->category; // Получаем категорию статьи

dump($category->name); // Выводим название категории

dump($category->articles); // Выводим список всех статей в данной категории
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы