簡體   English   中英

雄辯的ORM多對多關系

[英]Eloquent ORM Many-to-many relationship

我剛剛開始使用Eloquent ORM(沒有Laravel),並且我與多對多關系存在問題。 我在那里我存儲表Families (文章類別),另一個用於Articles ,而第三個為“支點”。 我希望能夠獲得“家庭”擁有的所有文章以及該文章所屬的所有家庭。 所以我已經編碼了這個模型。

家庭

class Families extends Model {

public $table = 'Families';

    public function Articles() {
        return $this->belongsToMany('Articles', 'articles_families', 'families_id', 'articles_id');
    }

}

文章

class Articles extends Model {

public $table = 'Articles';

     public function Families() {
         return $this->belongsToMany('Families', null, 'articles_id', 'families_id');
     }

}

然后,我試圖像這樣檢索數據:

$families = Families::all();
echo $families[1]->Articles;

但是,當它應該返回幾篇文章時,它只是返回一個空數組。 我已經三倍地檢查了三個表中的所有值是否正確。 如果回顯Eloquent查詢調試器,我可以看到它正在尋找一個空值,並且我很確定這是問題所在,但是我不太知道如何解決它。 這里:

{"query":"select * from `Families`","bindings":[],"time":49.13},{"query":"select `Articles`.*, `articles_families`.`families_id` as `pivot_families_id`, `articles_families`.`articles_id` as `pivot_articles_id` from `Articles` inner join `articles_families` on `Articles`.`id` = `articles_families`.`articles_id` where `articles_families`.`families_id` is null","bindings":[],"time":38.93}

空值位於最后一個查詢的末尾。

我自己找到了解決方案。 由於我的主鍵列稱為Id ,而Eloquent默認情況下假定主鍵稱為id ,因此我需要通過添加一個類屬性protected $primaryKey = "Id";來覆蓋它protected $primaryKey = "Id"; 現在可以正確檢索數據了。

暫無
暫無

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

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