2016-10-13 7 views
0

これは初心者の質問でなければならないが、どうしたらいいのか分からない。 異なるクラスの特定のオブジェクトにリンクされた複数のオブジェクトをdb内に保存しようとしています。Laravel - モデル参照からオブジェクトIDを取得する/リンクされたオブジェクトの配列を保存する

私の最初のアイデアは(パラメータで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モデルを拡張) - とTestScenarioの2つの間の関係:

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

これを保存する別の方法がありますか?

助けてくれてありがとう!

答えて

0

モデル関係を定義するための適切な命名規則がこのようなのようなものです:

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

と逆:scenario_elementsのためのあなたの対応するデータベースの移行で

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

、あなたが持っているでしょう:

$table->integer('test_scenario_id)->unsigned(); 
$table->foreign('test_scenario_id')->refences('id')->on('test_scenarios'); 
関連する問題