无法让 Laravel 助理工作 [英] Can't get Laravel associate to work

查看:14
本文介绍了无法让 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 助理工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆