나는 세 테이블이있다.Laravel 1 대 다수의 관계를 삽입
- 한 계약이 (수) 여러 개의 주문
- 그러나 한 순서는 내가 다른 테이블을 생성 한 계약
수 있습니다 (order_contract) (여러 개의 주문 최종 가격이 될 수 있기 때문에 함께 합류) 주문 및 계약에 참여할 수 있습니다. 마이그레이션은 다음과 같습니다 :
내 테이블에 데이터를 삽입 할public function up()
{
Schema::create('contracts', function(Blueprint $table)
{
$table->increments('id');
$table->timestamps();
});
Schema::create('orders', function(Blueprint $table)
{
$table->increments('id');
$table->integer('price');
$table->timestamps();
});
Schema::create('order_contract', function(Blueprint $table)
{
$table->integer('order_id')->unsigned();
$table->foreign('order_id')->references('id')->on('orders');
$table->integer('contract_id')->unsigned();
$table->foreign('contract_id')->references('id')->on('contracts');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('contracts');
Schema::drop('orders');
Schema::drop('order_contract');
}
. 1. 새 계약을 삽입 (삽입에 내가 알고있는 $contract->id
) 2. 두 개 이상의 주문 후 order_contract 테이블에 모든 단일 관계를 삽입
모델 한 순서에 부착 된 경우 :
**Order.php**
class Order extends Eloquent{
protected $fillable = ['price'];
public function contract(){
return $this->belongsTo('Contract');
}
}
**Contract.php**
class Contract extends Eloquent{
public function orders(){
return $this->hasMany('Order','order_contract','order_id','contract_id');
}
}
내가이 상황 Laravels hasOne의에서 사용할 수있는 방법() , hasMany(), belongsTo(), belongsToMany() 함수?
나는 그것이 관계를위한 또 다른 테이블을 만드는 영리한 해결책이라고 생각했고, 또 다른 물건으로 주문 테이블을 채우지 않았고 가능한 모든 테이블을 기본으로 만들지 않았다. 당신의 해결책은 옳고 받아 들일 만하다. 하지만 "중간"테이블을 어떻게 사용할 수 있습니까? 고맙습니다. – jeugen
나는 왜 그런 식으로 가고 싶은지 이해하지만 다른 길에 대해 생각해 보길 강력히 권합니다. 내 대답을 업데이트했습니다. – Jazerix
결국 나는 중간 테이블없이 길을 선택했다. – jeugen