我有这样的数据库。
+----------------+
| Tables_in_test |
+----------------+
| a_b |
| a_c |
| as |
| bs |
| cs |
+----------------+
bs和cs表与表有很多关系。所以a_b表和a_c表是数据透视表。
这是表格
+----+------+
| id | name |
+----+------+
| 1 | A1 |
| 2 | A2 |
+----+------+
这是bs表
+----+------+
| id | name |
+----+------+
| 1 | B1 |
+----+------+
这是cs表
+----+------+------+
| id | b_id | name |
+----+------+------+
| 1 | 1 | C1 |
| 2 | 1 | C2 |
+----+------+------+
这是a_b透视表
+------+------+
| a_id | b_id |
+------+------+
| 1 | 1 |
+------+------+
这是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表的B模型
class B extends Model
{
protected $table = "bs";
public function c(){
return $this->hasMany("App\C");
}
}
我只想查询与A表相关的C表值。
我试过了这个查询
A::where("id",1)->with("b.c")->get();
但是这个结果也给了我C2值,它与“ as ”表中的A2有关。我想只得到C1值,它只与“ as ”表中的A1值相关。
我该怎么做?谢谢你的帮助
答案 0 :(得分:0)
在您的示例中,数据A1与B1有关,而B1又与C2有关。事实上,您正在嵌套b.c
急切负载,因此您正在加载与这些B相关的B和C。
你试过A::where("id",1)->with(["b", "c"])->get();
?