首页 > 解决方案 > 许多关系数据的左连接表

问题描述

我有两张桌子。第一个用于插入滑块选项,第二个用于插入滑块的关系幻灯片。

滑块表:

| 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)。我需要显示滑块数据并将关系幻灯片数据(图像数据)显示到滑块中(用于更新页面)。我该如何解决这个问题?

标签: phpmysqlleft-join

解决方案


我认为这是处理这种情况的最佳解决方案。试试这个。

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;
}

推荐阅读