【问题标题】:Laravel 4: fetching only models that have related modelsLaravel 4:仅获取具有相关模型的模型
【发布时间】:2014-02-12 10:11:19
【问题描述】:

我只想在模型存在特定相关模型时检索模型,例如

$posts = Post::has('comment')->get();

虽然相反,但效果很好:

$comments = Comment::has('post')->get();

我收到以下错误:

Has method invalid on "belongsTo" relations.

基本上我想这样做的原因是,在特殊情况下,当我在视图中调用相关模型时,有时由于数据错误,该模型可能不存在相关模型(即使它应该存在)在数据库等....

{{ $jobApplication->job->title }}

当 jobApplication 没有工作时,显然会得到以下错误:

Trying to get property of non-object

【问题讨论】:

    标签: php model laravel laravel-4 eager-loading


    【解决方案1】:

    发生这种情况的原因是,当您的数据库中有 1->n 关系时,n 部分可能具有多个与之相关的寄存器。但是,反过来就不一样了。 post 可能有 n cmets,但评论 belongs to 只有一个帖子。因此,has('model') 方法不适用于这种情况。

    不过,如果设置了变量,您的问题的解决方案将是验证。尝试在控制器上执行此操作。

    希望对您有所帮助!

    【讨论】:

    • 谢谢你把它弄明白了。尽管在访问深度嵌套模型时将内容包装在 if 语句中充其量是很麻烦的。例如$person->address->street->name(不好的例子,但你明白了)
    • ...遗憾的是,您无法避免!你所能做的就是@if(isset($the->whole->statemente->here))。这将防止您需要先检查每个级别,而无需在您的脸上抛出错误屏幕! :D
    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 2018-05-31
    • 2015-06-12
    • 2014-06-01
    • 2016-05-26
    • 2016-08-30
    • 2014-12-05
    • 1970-01-01
    相关资源
    最近更新 更多