簡體   English   中英

如何與Eloquent建立多態關系

[英]How to establish polymorphic relations with Eloquent

使用 Laravel 和 Eloquent。 我有一個看起來像這樣的數據庫:

圖示

dance_performers.dance_perfomer_type字段承載諸如'\App\Dancer''\App\Couple''\App\Formation'類的值。

您將如何繼續將dance_performers.dance_perfomer_id連接到不同的模型? 我不確定我應該如何在不同的模型中編寫關系。 我是否應該創建一個\App\Performer model 來指向前面提到的三個之一?

使用多態關系:

class Dance extends Model {
    public function couples() {
        return $this->morphedByMany('\App\Couple', 'dance_performer');
    }
}

class Couple extends Model
{   
    public function dances() {
        return $this->morphToMany('App\Dance', 'dance_performer');
    }
}

目前, $dances = \App\Dance::with('couples')->get(); 只返回空關系。 我將不勝感激。

根據您的代碼,一切都是正確的。 我猜你在數據庫中沒有正確的數據。 添加一些如下數據並檢查。

dances

id - 1,名稱 - 'Dance A'

id - 2,名稱 - '舞蹈 B'

couples

id - 1,名稱 - '情侶 A'

id - 2, name - '情侶 B'

dance_performers

id - 1,dance_id - 1,dance_performer_type - '\App\Couple',dance_performer_id - 1

id - 2,dance_id - 2,dance_performer_type - '\App\Couple',dance_performer_id - 2

解決了。 type字段應該是App\ModelName而不是\App\ModelName

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM