【发布时间】:2014-07-20 20:44:04
【问题描述】:
当我在另一个模型的关系上尝试 firstOrCreate() 时,它不起作用:
Client::find($id)->users()->firstOrCreate(array('email' => $email));
这会返回一个错误提示
调用未定义的方法 Illuminate\Database\Query\Builder::firstOrCreate()
直接在模型User 上运行它会起作用。
【问题讨论】:
-
这行不通,您必须手动/直接使用 User 模型进行操作,因为
users()应该在调用get()时返回一个集合对象,在这种情况下它将返回一个 @ 987654327@ 实例。 -
我用我自己的模型对此进行了测试,这很有效——你是如何定义你的关系的?您是否使用任何 belongsTo、hasOne、hasMany 关系,或者您是否使用 DB 类或类似的东西定义了自己的关系?或者您可能没有任何具有给定 ID 的客户?
-
如果您使用 laravel 关系,它也被记录在 laravel.com/docs/5.1/… 中,它应该可以工作。如果你这样做了,但它不起作用,我们需要更多的代码。
标签: php laravel eloquent relationship