如何将数据插入嵌套模型

时间:2018-06-19 18:34:29

标签: laravel nested

如何将数据插入嵌套表。我尝试使用嵌套模型创建用户注册系统二进制mlm。 但是我在使用嵌套模型表时遇到问题。 我可以通过引荐链接创建用户注册。之后,我需要将用户放置在发起人用户的左侧和右侧。 首先,我已经创建了用于引用链接生成的用户表。 其次,我需要通过嵌套模型创建树表。 在这个我有问题,我冲突如何将数据插入嵌套表。 在第一个表格中,我获得了带有引荐链接的用户。

[https://i.stack.imgur.com/sKQb5.png][1]

在第二张表中,需要将用户设置为右侧和左侧 那么如何插入

1 个答案:

答案 0 :(得分:0)

我认为模型关系处理肯定可以在此领域得到改进,但是由于PHP的某些限制以及Eloquent的构造方式,怀疑“自动”进行操作相当棘手。但是,只需进行一些调整即可。

首先,我们需要将关系设置为可填充。然后,我们需要为其设置一个setter / mutator,以便在填充时调整其行为。最后,我们使用push()而不是save()来保存模型及其所有关系。

// the model
class MyModel extends Eloquent
{
    protected $fillable = ['name', 'relation'];

    public function relation()
    {
        return $this->belongsTo('OtherModel');
    }

    public function setRelationAttribute(array $value)
    {
        if ($this->relation) $this->relation->fill($value);
    }
}

// in the view
<?= Form::text('name') ?>
<?= Form::text('relation[name]') ?>

// the controller
$model->fill(Input::all());
$model->push();

在某些情况下,这是行不通的,例如其中一个模型不存在,但是您可以调整行为以适合您的用例。这是由于Eloquent中存在更多总体问题,例如如果尚没有主键,则无法附加相关模型。