Định nghĩa Inverse của quan hệ One To Many (ok)

https://viblo.asia/p/eloquent-relationships-in-laravel-phan-1-PdbGnoEdeyA

Bây giờ chúng ta có thể truy cập tất cả các comments, hãy định nghĩa một quan hệ để cho phép comments có thể truy cập từ 1 post. Để xác định các inverse của quan hệ hasMany, chúng ta dùng phương thức belongsTo:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    /**
     * Get the post that owns the comment.
     */
    public function post()
    {
        return $this->belongsTo('App\Post');
    }
}

Một khi relationship được xác nghĩa, chúng ta có thể lấy Post model cho một Comment bằng cách truy cập post "dynamic property":

$comment = App\Comment::find(1);

echo $comment->post->title;

Trong ví dụ trên, Eloquent sẽ cố gắng để match một post_id từ Comment model với 1 id của Post model. Eloquent xác định mặc định tên foreign key bằng cách kiểm tra tên của phương thức relationship và nối với hậu tố _id. Tuy nhiên bạn vẫn có thể tùy chỉnh nó bằng cách thêm đối số thứ 2 trong phương thức belongsTo như sau:

/**
 * Get the post that owns the comment.
 */
public function post()
{
    return $this->belongsTo('App\Post', 'foreign_key');
}

Nếu model cha không sử dụng id làm khóa chính của nó, bạn có thể tùy chọn nó bằng đối số thứ 3 của phương thức belongsTo

/**
 * Get the post that owns the comment.
 */
public function post()
{
    return $this->belongsTo('App\Post', 'foreign_key', 'other_key');
}

Last updated