Laravel - 从模型引用获取对象id /保存链接对象的数组

时间:2016-10-13 13:58:14

标签: php laravel orm eloquent

这一定是初学者的问题,但我不太清楚要走的路是什么。 我正在尝试在链接到不同类的特定对象的数据库中保存多个对象。

我的第一个想法是在模型中创建一个方法,在参数中获取一组ID并手动保存它们中的每一个(类似的东西:

class TestScenario extends Model
{
[...]
   public function saveScenario($scripts)
{
      [...]
      ScenarioElement::insert(['test_scenario_id'=>$this->id,'elementary_script_id'=> $scripts[0]]);    
   });  
}

所以,我的第一个问题是:如何获取模型所代表的对象实例的正确id? (显然$this->id无效,我通过控制器中的$testScenario->saveScenario($scripts);调用此方法。

正如您所猜测的,我有另一个模型(类ScenarioElement extends Model) - 以及两者之间的关系,在TestScenario中:

public function getScenarioElements()
    {
        return $this->hasMany(ScenarioElement::class)->orderBy('order','asc');
    }

还有另一种方法可以保存吗?

感谢您的帮助和投入!

1 个答案:

答案 0 :(得分:0)

定义模型关系的正确命名约定如下:

class TestScenario extends Model
{
    public function scenarioElements()
    {
        return $this->hasMany(ScenarioElement::class)->orderBy('order','asc');
    }
}

反过来说:

class ScenarioElement extends Model
{
    public function testScenario()
    {
        return $this->belongsTo(TestScenario::class);
    }
}

在scenario_elements的相应数据库迁移中,您将拥有:

$table->integer('test_scenario_id)->unsigned();
$table->foreign('test_scenario_id')->refences('id')->on('test_scenarios');