通过hasMany获取子表数据,并在父表

时间:2015-07-31 22:24:20

标签: php multidimensional-array foreach laravel-5 eloquent

框架

Laravel 5.1

目标

  1. 获取buttons button_sets的所有template_id,其中$id = $idmodules在调用时传递给控制器​​方法)

  2. (两个选项)(1)传递两个数组,buttonsmodules。 (2)将带有buttonsid的多维数组作为基础数据的两个键。根据模板的modules检索这两个选项。

  3. 表格结构

    name | type ----------------------- id | int(10) name | varchar(255) header | varchar(255)

    templates

    name | type ----------------------- id | int(10) name | varchar(255)

    button_sets

    name | type ----------------------- id | int(10) name | varchar(255) templates_id | int(10) (FK with 'id' on 'templates') modules_id | int(10) (FK with 'id' on 'modules')

    buttons

    name | type ----------------------- id | int(10) name | varchar(255) button_sets_id | int(10) (FK with 'id' on 'button_sets')

    class ButtonSet extends Model
    {
        public function buttons()
        {
            return $this->hasMany('App\Button', 'button_sets_id', 'id');
        }
    }
    

    关系

    public function show($id)
    {
        switch ($id) {
            case 1:
                $mod = Module::all()->toArray();
                $buttons = ButtonSet::with('buttons')->get()->toArray();
                $modules = $this->array_merge_recursive_distinct($mod, $buttons);
    
                return view('index', compact('modules'));
        }
    }
    

    控制器方法

    $buttons = ButtonSet::with('buttons')->get()->toArray();

    尝试和问题

    目标1

    正如您在Controller方法中看到的,我尝试使用Eager Loading(认为这是要走的路),并且能够使用以下代码使用其按钮成功检索所有button_sets的多维数组: where template_id = $id。我仍然需要说modules ... 我该怎么做?

    目标2 [求助]

    然后我尝试使用this将上面的数组与Trying to get property of non-object数组合并,这非常好用。 虽然这导致了一个没有多少嵌套数组的多维数组,但我仍然无法说我现在无法从视图中提取任何数据,使用上面的foreach循环,得到错误x_min 这里需要更改什么? 已成功从合并数组中检索数据。

    有没有更简单的方法来实现这一切?

    我试图围绕多态关系进行思考,但我对PHP,OOP和Laravel这么新,这超出了我的理解......

    如果您需要更多数据来了解我的挑战,请告诉我。

    非常感谢有人能指出我正确的方向!

0 个答案:

没有答案