【发布时间】:2017-02-21 11:53:51
【问题描述】:
我有 3 个如下表。
表 A
id | val_a
1 | a1
2 | a2
3 | a3
表 B
id | id_a| val_b | id_c
1 | 2 | b1 | 1
2 | 2 | b2 | 3
3 | 3 | b3 | 4
表 C
id | val_c
1 | c1
2 | c2
3 | c3
4 | c4
获取如下数据的最佳方法是什么:
[
[0] => stdClass Object
(
[id_a] => 1
[val_a] => 'a1'
)
[1] => stdClass Object
(
[id_a] => 2
[val_a] => 'a2'
[table_b_c] => Array
(
[0] => stdClass Object
(
[id_b] => 1
[val_b] => 'b1'
[id_c] => 1
[val_c] => 'c1'
)
[1] => stdClass Object
(
[id_b] => 2
[val_b] => 'b2'
[id_c] => 3
[val_c] => 'c3'
)
)
)
[2] => stdClass Object
(
[id_a] => 3
[val_a] => 'a3'
[table_b] => Array
(
[0] => stdClass Object
(
[id_b] => 3
[val_b] => 'b3'
[id_c] => 4
[val_c] => 'c4'
)
)
)
]
TableA 模型
class TableA extends Model {
public function getTableA($id_a) {
return $this->where('id', $id_a)->with('TableB', 'TableC')->get()->toArray();
}
}
表 B 的模型
class TableB extends Model {
public function tableA(){
$this->belongsTo('App\tableA');
}
public function tableC(){
$this->belongsTo('App\tableC');
}
}
TableC 模型
class TableC extends Model {
}
我已经尝试过上述关系,但它对我不起作用。
我正在使用Laravel 5.2。并通过 foreach 循环实现这一点。但我不知道最好的方法是什么。我可以通过 laravel 或 Mysql 做到这一点吗?提前谢谢。
【问题讨论】:
-
关系出了什么问题?
-
您的模型似乎是错误的。 B 型应该有
$this->belongsTo('App\ModelA', 'id_a');和$this->belongsTo('App\ModelC', 'id_c');功能。模型 A 中的第二个函数应该在模型 C 中。然后循环使用$a->tableBs() -
@Martin Henriksen 我与“id_a not found in TableC”的关系
-
@louisav 我已经在 tableB 中创建了这两个函数,但是如何关联呢?
-
你的 hasMany 关系更喜欢复数函数名。请用您的新模型更改更新问题。
标签: php mysql laravel laravel-5.2