【问题标题】:Laravel accessing multiple models/tables in a single viewLaravel 在单个视图中访问多个模型/表
【发布时间】:2017-04-17 11:13:29
【问题描述】:

所以我正在 Laravel 框架中建立一个项目管理网站。 购买我的问题是:我有一个 Models 表、一个 submodels 表和一个 subsubmodelstable。子模型属于模型,子子模型属于子模型。但我希望有某种仪表板视图,我可以在其中监督所有模块及其子模块及其子模块。 但是我无法访问仪表板视图中的所有模型(表)。 我有适用于所有模块类型的控制器,但还没有适用于仪表板视图的控制器。

提前感谢您的帮助!

【问题讨论】:

    标签: php laravel models blade


    【解决方案1】:

    我想最好的方法是 eager load 具有两种关系的模型:

    Model::with('submodel', 'submodel.subsubmodel')->get();
    

    nested eager loading 此处使用点符号。

    【讨论】:

    • 很抱歉,我应该把它放在哪里?即使是我遇到问题的文档
    • 你需要把它放在控制器或模型中(在这种情况下,你应该稍微修改一下代码)。最好先阅读一些好的 Laravel 教程或观看一些介绍视频。
    【解决方案2】:

    如果您可以像 $model->submodels 这样从模型中获取子模型,那么您可以为仪表板创建一个控制器,并返回带有模型的仪表板视图

    $models = Model::all();
    $return view('...')->with('models', $models);
    

    在视图中,遍历所有模型。在迭代中,还可以对其子模型及其子子模型进行迭代

    @foreach($models as $model)
        @foreach($model->submodels as $submodel)
            @foreach($submodel->subsubmodels as $subsubmodel)
    
            @endforeach
        @endforeach
    @endforeach
    

    【讨论】:

    • 当我尝试像 $model->submodels 一样调用它们时,它只会在页面上打印“submodels ?>”
    • 在模型中,你定义了一个函数 submodels(){return $this->hasMany(Submodel::class);} 吗? Laravel relations 编辑:修复输入错误
    • 好吧,我把它写成'public function submodules(){ return $this->hasMany('App\Submodule'); }' 我得到了错误但后来我得到了这个错误: SQLSTATE [42S22]:找不到列:1054 Unknown column 'submodules.module_id' in 'where Clause' (SQL: select * from submodules where submodules .module_id = 1 和submodules.module_id 不为空)(查看:D:\Program Files\wamp\www\pmsl\resources\views\module\index.blade.php)。它现在尝试访问 submodules.module_id 但它需要访问 submodules.modules_id
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多