2016-06-24 18 views
0

検査から検査までの関係が1対多の関係に挿入したいと思います。 1つの検査が複数の詳細を持つ場合があります。問題は、私は1つのモデル "検査"です。 inspection_detailsテーブルからデータを挿入または取得するにはどうすればよいですか?1つのモデルのみで関係が1対1のモデルへの挿入

Table structure is this

検査モデルのコードは

class Inspection extends Model 
{ 
    protected $fillable =[ 
     'schedule_id', 'inspector', 'comments', 'signature' 
    ]; 


    public function details() 
    { 
     return $this->belongsToMany('App\Inspection', 'inspection_details'); 
    } 
} 

を使用していた。しかし、私は、詳細テーブルのレコードを挿入または取得することはできませんよ。私はいじくり回すと一緒に使用している

コード:

$ins = App\Inspection::find(1) 
$ins->details 

私は細部のインスタンスを取得していますが、私はinspection_detailsテーブル内のデータを挿入する方法がわかりません。

+1

あなたが「1つの検査は複数の詳細を有していてもよい」と言うが、その後にあなたが書いたモデルクラス 'public function details() { return $ this-> belongsToMany( 'App \ Inspection'、 'inspection_details'); } '。なぜそうなのか? $ this-> hasMany( 'App \ InspectionDetail'、... '? – linuxartisan

+0

それは私の問題です。別のモデル 'App \ InspectionDetail'を作成する必要があるのはなぜですか? 1つのモデルだけで作業することはできますか? –

+0

2番目のモデルを作成しないとできません。 –

答えて

0

inspectionはそうあなたはこのようにそれを参照するだろう多くのinspection_detailsを持っています

検査モード

public function details() 
{ 
    return $this->hasMany('App\InspectionDetail'); 
} 

そしてそれは、このようなinspectionからinspection_detailから逆の関係です:

InspectionDetailモーダル

public function inspection() 
{ 
    return $this->belongsTo('App\Inspection'); 
} 

検査にリンクされている新しいディテールを保存するという点では、あなたが最初にこれに検査をフェッチ詳細はリンクする必要があります。

$ins = App\Inspection::find(1) 

それが定義した後、あなたの新しいinspection_detail

$insDetail = App\InspectionDetail::Create(array(
    // your parameters that need to be set 
)); 

その後inspectionにバインド:

$ins->detail = $insDetail; 

そして最後にデータベースに保存します。

$ins->save(); 
0

変更する必要があるものが2つあります。

現在、belongsToManyを使用しています。これは、many-to-manyの関係がある場合に使用されます。

また、モデル自体に関連しています。 belongsToMany('App\Inspection', ...)

これはあなたの問題を解決する方法の例である:、inspectioninspection_details間のすべての関係の最初に間違っている

class Inspection extends Model 
{ 

    protected $fillable =[ 
     'schedule_id', 'inspector', 'comments', 'signature' 
    ]; 


    public function details() 
    { 

     // I assume you also created a model InspectionDetail for you details table 
     // 
     return $this->hasMany('App\InspectionDetail'); 

    } 

} 
関連する問題