Привет, laravel не вставляет правильное значение в сводную таблицу для многих-многих случаев.Laravel красноречивый нетрадиционный столбец не работает
Вот мой первый модель
class ShippingAddress extends Eloquent {
protected $guarded = array('id');
protected $table = 'shippingAddress';
public function mwsOrder()
{
return $this->belongsToMany('MwsOrder',
'mwsOrders_shippingAddress',
'Address_id',
'AmazonOrderId'
);
}
}
Вторая модель
class MwsOrder extends Eloquent {
protected $table = 'mwsOrders';
protected $primaryKey = 'AmazonOrderId';
public function shippAddress()
{
return $this->belongsToMany('ShippingAddress',
'mwsOrders_shippingAddress',
'AmazonOrderId',
'Address_id'
);
}
}
EER Схема
Теперь, когда я запускаю этот
$mwsOrder = new MwsOrder;
$mwsOrder->AmazonOrderId = 'Eve 6';
$mwsOrder->save();
$address = new ShippingAddress;
$address->name = 'Naruto Uzumaki';
$address->save();
$address->mwsOrder()->attach($mwsOrder);
//$mwsOrder->shippAddress()->save($address);
Laravel THR РМО ошибка, и это то, что Laravel пытается выполнить запрос
(SQL: вставить в
mwsOrders_shippingAddress
(Address_id
,AmazonOrderId
) значений (1, 3))
Что мне нужно, чтобы произвести это запрос
вставки в
mwsOrders_shippingAddress
(Address_id
,AmazonOrderId
) значения (1, 'Eve 6')
Обновление: схемы являются:
Schema::create("shippingAddress", function(Blueprint $table)
{
$table->increments("id");
$table->string("Name");
$table->timestamps();
});
Schema::create("mwsOrders", function(Blueprint $table)
{
$table->increments("id");
$table->string("AmazonOrderId")->unique();
$table->timestamps();
});
Schema::create("mwsOrders_shippingAddress", function(Blueprint $table)
{
$table->increments("id");
$table->string("AmazonOrderId");
$table->foreign("AmazonOrderId")->references("AmazonOrderId")->on('mwsOrders');
$table->integer("shipping_address_id")->unsigned();
$table->foreign("shipping_address_id")->references('id')->on('shippingAddress');
$table->timestamps();
});
Не следует ли заказ местного и иностранного ключа будут перевернуты общественная функция shippAddress() { возвращение $ this-> belongsToMany ('ShippingAddress', 'mwsOrders_shippingAddress', 'AmazonOrderId', AmazonOrderId 'Address_id' ); } – Arlind
i намеренно изменил его, я попробовал все четыре комбинации изменения coloumns, но все же laravel выбирает поле id вместо «AmazonOrderId» – Abdullah