gpt4 book ai didi

php - 多表中的 Laravel 关系

转载 作者:行者123 更新时间:2023-11-30 22:03:59 26 4
gpt4 key购买 nike

我有如下 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'
)
)
)
]

表 A 的模型

class TableA extends Model {

public function getTableA($id_a) {
return $this->where('id', $id_a)->with('TableB', 'TableC')->get()->toArray();
}
}

TableB 模型

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 做到这一点吗?提前致谢。

最佳答案

我已经设置了一些数据并使用了 this documentation返回嵌套对象。

您的模型函数名称必须正确标记,然后才能正常工作:

$data = TableA::with(['recordsB.recordC'])->get();
dd($data->toArray());

这意味着将获取所有 TableA 记录,然后添加表 B 中与每个 A 记录相关的所有记录。只要模型中的函数名称是recordsB。然后,dot 语法添加表 C 中的嵌套和相关记录(对于每个 B 记录),再次给出正确的函数名称。请参阅文档中的“嵌套预加载”。

您描述的数据似乎不适用于特定的 A 记录。所以最好在 Controller 中进行预加载。为此,我从 getTableA 函数中删除了 id 参数。

在模型中——模型表A:

class TableA extends Model {

public function getTableA() {
$data = TableA::with(['recordsB.recordC'])->get();
return $data;
}

public function recordsB(){
$this->hasMany('App\TableB');
}
}

模型表 B:

class TableB extends Model {
public function recordA(){
$this->belongsTo('App\TableA');
}

public function recordC(){
$this->belongsTo('App\TableC');
}
}

模型表 C:

class TableC extends Model {
public function recordsB(){
$this->hasMany('App\TableB');
}
}

关于php - 多表中的 Laravel 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42366590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com