如何使用组合键在Laravel中定义关系?
我有2个表,这些表具有2个主键,顺序为[id_order,id_trip]和明细顺序[id_trip,id_seat]。
我试图在index.blade.php中获得$ order-> detail_order-> id_seat,但错误是Array到字符串的转换(视图:D:\ xampp \ htdocs \ travel \ resources \ views \ order \ index .blade.php)
我认为我在定义模型关系时犯了一个错误。这是我的代码:
Order.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Traits\CompositeKeyTrait;
class Order extends Model{
use CompositeKeyTrait;
protected $table = "order";
protected $fillable = [
'id_order',
'id_trip',
'id_users_customer',
'date_order',
'id_users_operator'
];
protected $primaryKey = ['id_order', 'id_trip'];
public function detail_order(){
return $this->hasMany(Detail_Order::class);
}
}
Detail_Order.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Traits\CompositeKeyTrait;
class Detail_Order extends Model{
use CompositeKeyTrait;
protected $table = "detail_order";
protected $fillable = [
'id_trip',
'id_seat',
'id_users_feeder',
'id_order',
etc
];
protected $primaryKey = ['id_trip', 'id_seat'];
public function order(){
return $this->belongsTo(Order::class, 'id_order', 'id_trip');
}
}
index.blade.php
@foreach($order as $o)
<tr>
<td>{{ $o->detail_order->id_seat }}</td>
</tr>
@endforeach
有人有任何想法吗?谢谢。
Laravel不支持复合主键。您遇到“数组到字符串转换”错误,因为Laravel尝试将数组转换为字符串。
protected $primaryKey = ['id_order', 'id_trip'];