0
私はデータベースにhasManyTrough()リレーションを持っていますが、それを雄弁で扱うことができませんでした。Eloquent ORM hasManyTrough
関係私のデータベース
category(id)
entry(id)
category_entries(category_id, entry_id)
に私は3つのモデル
Category
has_many CategoryEntries
Entry
has_many CategoryEntries
CategoryEntry
belongs_to Category
belongs_to Entry
を持っているので、すべてのカテゴリでは、多くのエントリを持っており、すべてのエントリには、多くのカテゴリがあります。
私は雄弁CategoryEntry
public function category(){
return $this->belongsTo('App\Category');
}
public function entry(){
return $this->belongsTo('App\Entry');
}
Category
public function categoryEntries(){
return $this->hasMany('App\CategoryEntry');
}
Entry
public function categoryEntries(){
return $this->hasMany('App\CategoryEntry');
}
public function categories()
{
return $this->hasManyThrough('App\Category', 'App\CategoryEntry', 'category_id', 'id');
}
に次のように作成しているが、これは次のSQLコマンドを作成する、次の
Entry
has_many CategoryEntries
has_many Categories, through: :category_entries
だろうレールで
:
select `entries`.*, `category_entries`.`category_id` from `entries`
inner join `category_entries` on `category_entries`.`id` = `entries`.`entry_id`
これが可能にいいえ。私のミスはどこですか?あなたの質問で述べたように
hmしかし、両方のモデルhasMany 'CategoryEntry'関係があります。 'CategoryEntry'モデルで各エントリの' Category'を得ることができないのはなぜですか? – rob
あなたのアップデートに基づいて、ピボットテーブルの多対多関係を参照していますか?指定されたコード部分と与えられた関係とが矛盾しています –
私は参照してください。私は私の質問で間違いを犯しました。私の 'Entry'には全ての' Categories'が必要です。だから私は別々のモデル 'CategoryEntry'を使ってMany-Many関係を構築します。またはこれはlaravelの悪い方法ですか? – rob