【问题标题】:Laravel eloquent model relationship don't work on blade templateLaravel 雄辩的模型关系不适用于刀片模板
【发布时间】:2015-05-07 13:07:42
【问题描述】:

我有两张桌子:

Persons
id, name, foto_id

Fotos
id, url

Person 模型上,我添加了:

public function foto() {
    return $this->hasOne("App\\Foto","id","foto_id");
}

请注意,我需要转义 \F...

当我尝试{{ $person->foto->url }} 时,我收到“尝试访问非对象的属性”错误。如果我{{ print_r($person->foto()) }} 我只会得到1...

我关注了 laravel 文档,还有这个 tutorial

这是我正在创建的一个学习 Laravel 的项目,因此感谢任何有用的建议!

编辑:
artisan tinker$person->foto->url 中按预期工作,返回Foto 对象就好了...

【问题讨论】:

    标签: php eloquent laravel-5


    【解决方案1】:

    您需要使用belongsTo 函数而不是hasOne
    如果你创建了一个Foto 模型,那么你需要一个hasMany 函数。

    我参考Laravel docs了解更多信息。

    【讨论】:

    • 所以我必须链接两端的关系(Person hasOne Foto 和 Foto belongsToPerson)?
    • 反过来:代表FK的表格的模型使用belongsTo函数。代表PK的表的模型,使用hasOnehasMany函数。
    • 这似乎是我的误解! PersonFoto,所以我把FK(?) foto_id 放在Persons 表上,Fotos 表只有idurl 字段。因此,只有 Person 应该知道它的 Fotos 是什么,而 Foto 不应该知道它们属于谁。
    • 没错,但这只是数据库。在 laravel 术语中,这是 belongsTo 关系。 FK = 外键顺便说一句,这是保存与另一个表的关系值的键(在本例中为 1 列)。
    • 好的,我明白了。我觉得奇怪的是,如果我在artisan tinker 中尝试它,一切正常...我尝试了$person->foto->url,它按预期工作,没有任何改动...如果我在Foto 上添加belongsTo ,它仍然适用于思想家,并且不适用于刀片模板......
    猜你喜欢
    • 2019-02-12
    • 1970-01-01
    • 2013-06-04
    • 2016-11-26
    • 2018-02-19
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多