php - 许多关系数据的左连接表
问题描述
我有两张桌子。第一个用于插入滑块选项,第二个用于插入滑块的关系幻灯片。
滑块表:
| id | title | status | slider_options |
---------------------------------------------
| 1 | slider1 | 1 | [{"speed":"5000"}]
幻灯片表
| id | slider_id | image | content | order
------------------------------------------------------------
| 1 | 1 | upload/images/xxx.jpg | NULL | 1
| 2 | 1 | upload/images/yyy.jpg | NULL | 2
| 3 | 1 | upload/images/zzz.jpg | NULL | 3
现在在更新页面中,我需要显示滑块和关系幻灯片的数据。
public function getSliderData(int $id)
{
return $this->db->table('sliders')
->select('sliders.*, slides.id as slide_id, slides.image as image, slides.order as order')
->join('slides', 'slides.slider_id = sliders.id', 'left')
->where('sliders.id', $id)
->get()
->getResultObject();
}
输出是:
Array
(
[0] => stdClass Object
(
[id] => 1
[title] => slider1
[slider_options] => [{"speed":5000}]
[status] => 1
[slide_id] => 1
[image] => uploads/images/xxx.jpg
[order] => 1
)
[1] => stdClass Object
(
[id] => 1
[title] => slider1
[slider_options] => [{"speed":5000}]
[status] => 1
[slide_id] => 1
[image] => uploads/images/yyy.jpg
[order] => 2
)
[2] => stdClass Object
(
[id] => 1
[title] => slider1
[slider_options] => [{"speed":5000}]
[status] => 1
[slide_id] => 1
[image] => uploads/images/zzz.jpg
[order] => 3
)
)
在输出结果中,我看到每张幻灯片的三个数组对象和滑块数据(id、title、slider_options、status)。我需要显示滑块数据并将关系幻灯片数据(图像数据)显示到滑块中(用于更新页面)。我该如何解决这个问题?
解决方案
我认为这是处理这种情况的最佳解决方案。试试这个。
public function getSliderData(int $id)
{
$data = $this->db->table('sliders')->where('id',$id)->get()->result();
foreach ($data as $key => $value) {
$value->slides = $this->db->table('slides')->where('slider_id',$value->id)->get()->result();
}
return $data;
}
推荐阅读
- mysql - mysql。col1 和 col2 上存在多列索引,将使用什么索引?
- javascript - WebGL/THREE.js 有没有办法将视频 DOM 元素读入 YUV 纹理?
- html - 在首页显示上传的文件
- shopify - 如果所有产品不共享相同的标签 Shopify,则禁用结帐
- sql - 用一个不同的列合并两个表
- vector - Clojure - 在向量中找到相同值的最长条纹及其索引
- python - 当我尝试在 python 中写入文件时,我不断收到“ValueError: I/O operation on closed file”错误消息
- python - 在名称依赖于另一个实例方法的输入的实例/对象中运行方法
- c++ - 指针如何指向引用变量?
- domino-appdev-pack - 可以使用辅助通讯录吗?