Laravel 8 定義反向關(guān)聯(lián)

2021-07-19 11:34 更新

我們已經(jīng)能從 User 模型訪問到 Phone 模型了。現(xiàn)在,讓我們再在 Phone 模型上定義一個關(guān)聯(lián),這個關(guān)聯(lián)能讓我們訪問到擁有該電話的 User 模型。我們就可以使用與 hasOne 方法對應的 belongsTo 方法來定義反向關(guān)聯(lián):

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Phone extends Model
{
    /**
     * 獲取擁有此電話的用戶
     */
    public function user()
    {
        return $this->belongsTo('App\Models\User');
    }
} 

在上面的例子中, Eloquent 會嘗試匹配 Phone 模型上的 user_idUser 模型上的 id 。它是通過檢查關(guān)系方法的名稱并使用 _id 作為后綴名來確定默認外鍵名稱的。但是,如果 Phone 模型的外鍵不是 user_id,那么可以將自定義鍵名作為第二個參數(shù)傳遞給 belongsTo 方法:

/**
 * 獲得擁有此電話的用戶
 */
public function user()
{
    return $this->belongsTo('App\Models\User', 'foreign_key');
} 

如果父級模型沒有使用 id 作為主鍵,或者是希望使用不同的字段來連接子級模型,則可以通過給 belongsTo 方法傳遞第三個參數(shù)的形式指定父級數(shù)據(jù)表的自定義鍵:

/**
 * 獲得擁有此電話的用戶
 */
public function user()
{
    return $this->belongsTo('App\Models\User', 'foreign_key', 'other_key');
} 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號