0
私はこのようなデータベースを持っています。Laravel Eloquent多対多と3対1の関係をどのように組み合わせるか
+----------------+
| Tables_in_test |
+----------------+
| a_b |
| a_c |
| as |
| bs |
| cs |
+----------------+
bsとcsテーブルは、テーブルとして多対多の関係を持っています。したがって、a_bテーブルとa_cテーブルはピボットテーブルです。
これは、これは、BSテーブル
+----+------+
| id | name |
+----+------+
| 1 | B1 |
+----+------+
であり、これは、これが
+------+------+
| a_id | b_id |
+------+------+
| 1 | 1 |
+------+------+
012 A_Bピボットテーブルである
+----+------+------+
| id | b_id | name |
+----+------+------+
| 1 | 1 | C1 |
| 2 | 1 | C2 |
+----+------+------+
CSテーブルであるテーブルとして
+----+------+
| id | name |
+----+------+
| 1 | A1 |
| 2 | A2 |
+----+------+
あります
これはa_cピボットテーブルです。
+------+------+
| a_id | c_id |
+------+------+
| 1 | 1 |
| 2 | 2 |
+------+------+
これは私のモデルのasテーブルです。
class A extends Model
{
protected $table = "as";
public function b(){
return $this->belongsToMany("App\B");
}
public function c(){
return $this->belongsToMany("App\C");
}
}
そして、これは、BSテーブル用
class B extends Model
{
protected $table = "bs";
public function c(){
return $this->hasMany("App\C");
}
}
Bモデルである私は、テーブルに関連としてCテーブルの値を照会します。
私はこのクエリA::where("id",1)->with("b.c")->get();
を試みたが、この結果はまた、私に「として」表にA2に関連しているC2の値を与えます。私は "として"テーブルのA1値だけに関連するC1値だけを取得したいです。
どうすればいいですか?
ありがとうございました。しかし、Cモデルは1対多の関係でBモデルに集めなければならない –
私はそれを簡単に行う方法がないと思う。 –