Параметры hasMany, ownTo, ownToMany с произвольными именами?

У меня есть эти таблицы БД:

author (atr_id pk)                              // model : Author
category (ctg_id pk)                            // model : Category
post (pst_id pk, pst_atr_id fk)                 // model : Post
post_categories (pct_pst_id fk, pct_ctg_id fk)  // pivot : PostCategories 

как определить параметры hasMany, ownTo, ownToMany с пользовательскими именами?

Модель : Автор

public function getPosts()
{
    return $this->hasMany('App\Post', ?, ?);
}

Модель: Пост

public function getAuthor()
{
    return $this->belongsTo('App\Author', ?, ?);
}

public function getCategories()
{
    return $this->belongsToMany('App\Category', ?, ?, ?);
}

Модель : Категория

public function getPosts()
{
    return $this->belongsToMany('App\Post', ?, ?, ?);
}

показать структуру базы данных этих таблиц?

Inzamam Idrees 13.03.2019 13:23

Вы имеете в виду пользовательские внешние ключи?

Piazzi 13.03.2019 13:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
2
2
1 984
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Модель : Автор

public function getPosts()
{
    return $this->hasMany('App\Post', 'pst_id', 'atr_id');
}

Модель: Пост

public function getAuthor()
{
    return $this->belongsTo('App\Author', 'pst_atr_id', 'pst_id');
}

public function getCategories()
{
    return $this->belongsToMany('App\Category', 'post_categories', 'pct_pst_id', 'pct_ctg_id');
}

Модель : Категория

public function getPosts()
{
    return $this->belongsToMany('App\Post', 'post_categories', 'pct_ctg_id', 'pct_pst_id');
}

Модель : Автор

<?php

public function getPosts(){
     return $this->hasMany('App\Post','pst_atr_id');// author table's foreign key in Post table.
}

Модель: Пост

<?php

 public function getAuthor(){
     return $this->belongsTo('App\Author','pst_atr_id','atr_id'); // first is foreign key of author table in this current table and second is primary key name of author table.
 }

 public function getCategories(){
     return $this->belongsToMany('App\Category','post_categories','pct_pst_id ','pct_ctg_id'); /* 'post_categories' is the pivot table. Rest 2 parameters- first is foreign key present in post_categories of the current model, second is foreign key present in post_categories of the model we are relating with*/
 }

Модель : Категория

<?php

 public function getPosts(){
      return $this->belongsToMany('App\Post','post_categories ','pct_ctg_id','pct_pst_id');

    /* 'post_categories' is the pivot table. Rest 2 parameters- first is foreign key present in post_categories of the current model, second is foreign key present in post_categories 
     of the model we are relating with*/
 }
Ответ принят как подходящий
Author   : $this->hasMany('App\Post', 'pst_atr_id', 'atr_id');

Post     : $this->belongsTo('App\Author', 'pst_atr_id', 'atr_id');

Post     : $this->belongsToMany('App\Category', 'post_categories', 'pct_pst_id', 'pct_ctg_id');

Category : $this->belongsToMany('App\Post', 'post_categories', 'pct_ctg_id' 'pct_pst_id');

Другие вопросы по теме