- Отношения belongsTo
Определение обратного отношения
После получения доступа ко всем комментариям статьи давай определим отношение, которое позволит комментарию получить доступ к его статье. Чтобы определить обратное отношение hasMany(), давайте определим функцию отношения на дочерней модели, которая вызывает метод belongsTo():
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
/**
* Получить статью данного комментария.
*/
public function post()
{
return $this->belongsTo('App\Post');
}
}
После определения отношений мы можем получить модель Post для Comment, обратившись к динамическому свойству post:
$comment = App\Comment::find(1); echo $comment->post->title;
В примере выше Eloquent пробует связать post_id из модели Comment с id модели Post. По умолчанию Eloquent определяет внешний ключ по имени метода отношения плюс _id. Однако, если внешний ключ для модели Comment не post_id, вы можете передать своё имя вторым параметром в метод belongsTo():
/**
* Получить статью данного комментария.
*/
public function post()
{
return $this->belongsTo('App\Post', 'foreign_key');
}
Если ваша родительская модель не использует id в качестве первичного ключа, или вам бы хотелось присоединить дочернюю модель к другому столбцу, вы можете передать третий параметр в метод belongsTo(), который определяет имя связанного столбца в родительской таблице:
/**
* Получить статью данного комментария.
*/
public function post()
{
return $this->belongsTo('App\Post', 'foreign_key', 'other_key');
