Laravel关系组合主键

问题描述 投票:1回答:2

如何使用组合键在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

有人有任何想法吗?谢谢。

php mysql laravel composite-primary-key
2个回答
0
投票

Laravel不支持复合主键。您遇到“数组到字符串转换”错误,因为Laravel尝试将数组转换为字符串。

protected $primaryKey = ['id_order', 'id_trip'];

0
投票

你不能。口才不支持复合主键。但是您可以使用名为LaravelTreats的开源程序包。

希望这对您有帮助

参考:https://stackoverflow.com/a/36995763/10765839

© www.soinside.com 2019 - 2024. All rights reserved.