Can#39;t get Laravel associate to work(无法让 Laravel 助理工作)
问题描述
我不太确定我是否理解 associate 方法在 Laravel 中.我理解这个想法,但我似乎无法让它发挥作用.
I'm not quite sure if I understand the associate method in Laravel. I understand the idea, but I can't seem to get it to work.
使用这个(蒸馏)代码:
With this (distilled) code:
class User
{
public function customer()
{
return $this->hasOne('Customer');
}
}
class Customer
{
public function user()
{
return $this->belongsTo('User');
}
}
$user = new User($data);
$customer = new Customer($customerData);
$user->customer()->associate($customer);
当我尝试运行它时,我收到一个 Call to undefined method IlluminateDatabaseQueryBuilder::associate()
.
I get a Call to undefined method IlluminateDatabaseQueryBuilder::associate()
when I try to run this.
据我所知,我完全按照文档中的说明进行操作.
From what I can read, I do it exactly as is stated in the docs.
我做错了什么?
推荐答案
我不得不承认,当我第一次开始使用 Laravel 时,我必须始终如一地参考文档的部分关系,甚至在某些情况下我不太对劲.
I have to admit that when I first started using Laravel the relationships where the part that I had to consistently refer back to the docs for and even then in some cases I didn't quite get it right.
为了帮助您,associate()
用于更新 belongsTo()
关系.查看您的代码,从 $user->customer()
返回的类是一个 hasOne
关系类,上面没有关联方法.
To help you along, associate()
is used to update a belongsTo()
relationship. Looking at your code, the returned class from $user->customer()
is a hasOne
relationship class and will not have the associate method on it.
如果你反过来做.
$user = new User($data);
$customer = new Customer($customerData);
$customer->user()->associate($user);
$customer->save();
它会像 $customer->user()
是 belongsTo
关系一样工作.
It would work as $customer->user()
is a belongsTo
relationship.
反过来,您需要先保存用户模型,然后将客户模型保存到其中,例如:
To do this the other way round you would first save the user model and then save the customer model to it like:
$user = new User($data);
$user->save();
$customer = new Customer($customerData);
$user->customer()->save($customer);
可能没有必要先保存用户模型,但我总是这样做,不知道为什么.
It may not be necessary to save the user model first but I've just always done that, not sure why.
这篇关于无法让 Laravel 助理工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:无法让 Laravel 助理工作
基础教程推荐
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- 使用 PDO 转义列名 2021-01-01
- HTTP 与 FTP 上传 2021-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01