在Backback for Laravel上为具有一对一关系的资源创建CRUD

时间:2017-12-29 00:05:37

标签: php laravel laravel-5 one-to-one backpack-for-laravel

想象一下用户 - 模型与一个 Phone - 模型相关联,作为Eloquent Relationships定义的一对一关系,这意味着用户 -model具有以下功能:

/**
 * Get the phone record associated with the user.
 */
public function phone()
{
    return $this->hasOne('App\Phone');
}

虽然手机 -model有一个功能:

/**
 * Get the user that owns the phone.
 */
public function user()
{
    return $this->belongsTo('App\User');
}

现在的问题是如何在 Backpack for Laravel 中制作一个CRUD控制器,这样就可以在 Phone 中添加一个新的用户 >也以相同的CRUD添加/编辑形式提供。

添加电话资源然后添加用户资源似乎是标准的,其中有一个选择字段,您可以在其中选择现有的电话资源,但我尝试使用新电话添加新用户在一个CRUD控制器中,同时编辑用户,同时编辑他的电话。

以下是两个如何展示的示例: Illustration of Backpack Add-form for a User-model with a one-to-one relation to the Phone-model

我希望这是有道理的。

编辑:看来使用当前版本的Backpack for Laravel是不可能的,但是添加此功能的工作正在进行中:Github - Feature 1 to 1 relationships #865

2 个答案:

答案 0 :(得分:1)

只需编写updateCrud和storeCrud函数并编写自己的逻辑。这是非常简单的编写逻辑。您只需使用其余字段更新用户,然后手动更新电话字段。

您还可以尝试将getPhoneAttribute和setPhoneAttribute添加到User模型。这些功能可以管理关系,背包永远不会知道它不仅仅是另一个属性。

这在背包中是可能的,只需要自己写一些逻辑

答案 1 :(得分:0)

有很多选择 $用户>电话() - >保存($电话)