Laravel 5.4 Отношения уже не работают - PullRequest
0 голосов
/ 30 июня 2018

У меня есть 2 модели статьи и ArtCategories

Я установил отношение «один ко многим» между двумя моделями, используя serveTo () и hasMany (). Отношение hasMany () работает отлично, но ownTo () не работает Кто-нибудь знает, где я допустил ошибку? .

Код модели

class ArtCategories extends Model
{
    protected $table = 'pjt_categories_article';
    protected $primaryKey = 'cate_id';
    protected $fillable = ['cate_id','categories'];

    public function Article(){
        return $this->hasMany(Article::class);
    }
}
class Article extends Model
{
    protected $table = 'pjt_article';
    protected $primaryKey = 'article_id';
    protected $fillable = ['article_id','title','descriptions','username','cate_id','status','visit','reference'];

    public function ArtCategories(){
        return $this->belongsTo(ArtCategories::class,'cate_id');
    }

    public function admin(){
        return $this->belongsTo(Admin::class);
    }
}

Это структура БД. Таблица вверх - это pjt_article, таблица вниз - это pjt_categories_article. enter image description here

Результат

$art = Article::findOrFail($article_id); $cate = ArtCategories::pluck('categories', 'cate_id'); dd($art);

enter image description here

Отношение не работает

1 Ответ

0 голосов
/ 30 июня 2018

Вы должны добавить внешний ключ в методе отношения ArtCategories

class ArtCategories extends Model
{
    protected $table = 'pjt_categories_article';
    protected $primaryKey = 'cate_id';
    protected $fillable = ['cate_id','categories'];

    public function article(){
         return $this->hasMany(Article::class, 'cate_id');
    }
}

Теперь получите статью с ArtCategories как:

$art = Article::with('ArtCategories')->findOrFail($article_id);
$cate = ArtCategories::pluck('categories', 'cate_id');
dd($art);

Как гласит соглашение Article() метод должен быть articles(), а ArtCategories() должен быть artCategory().

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