2017-04-26 13 views
0

多くの関連する新しいモデルで新しいモデルを保存しようとしています。Laravel eloquent:新しいモデルを関連する新しいモデルで保存する

私は私のサービスモデル私は多くのserviceoperationモデルと、新しいサービスモデルを作成しています私の機能で

class Service extends Model{ 
    public function serviceoperations() { 
     return $this->hasMany("App\Models\ServiceOperation"); 
    } 
} 

と私のServiceOperationモデル

class ServiceOperation extends Model{ 
    public function service() { 
     return $this->belongsTo("App\Models\Service"); 
    } 
} 

を持っていますトランザクションを使用して:

use App\Models\Service; 
use App\Models\ServiceOperation; 
use Illuminate\Support\Facades\DB; 

    public function store(Request $request) { 
     $service = new Service(); 
     $ops = []; 
     foreach ($operations as $operation) { 
      $op = new ServiceOperation(); 
      $ops[] = $op; 
     } 
     DB::transaction(function()use($service, $ops) { 
      $service->save(); 
      $service->serviceoperations()->saveMany($ops); 
     }); 
    } 

マイ質問は次のとおりです。私の新しいサービスモデルに私の新しい関連serviceoperationモデルを追加し、単一のコマンドでデータベースに永続化する別の方法はありますか?

答えて

0

associateメソッドを使用する必要があります。

$service->serviceoperations()->associate($serviceoperations) 

は、それはあなたを助けるホープ:)

+0

私はそれが動作するかわかりません。 [この質問](http://stackoverflow.com/questions/26160661/cant-get-laravel-associate-to-work)を見て私はアソシエートを呼び出す前に私は私のサービスモデルを保存する必要があります。とにかく、私はそれを試して、それは動作しません。私は逆の '$ operation-> service() - > associate($ service)'も試しましたが、作成された新しいオペレーションは保存されません。 – GiuServ

関連する問題