首页 > 解决方案 > Laravel - 雄辩的关系(hasMany)问题

问题描述

另一个雄辩的关系问题:) 我希望有人能帮助我!

生产订单.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ProductionOrder extends Model
{  
    public function workOrders()
    {
        return $this->hasMany('App\WorkOrder');
    }
}

工单.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class WorkOrder extends Model
{
    public function productionOrder()
    {
        return $this->belongsTo('App\ProductionOrder');
    }
}

因此,ProductionOrder 应该有一个或多个 WorkOrder。

生产订单迁移

public function up()
{
    Schema::create('production_orders', function (Blueprint $table) 
    {
        $table->bigIncrements('id');
        $table->unsignedBigInteger('production_order_id')->unique();
        $table->longText('notes')->nullable();
        $table->timestamps();
     });
}

工单迁移

public function up()
{
    Schema::create('work_orders', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->unsignedBigInteger('work_order_id')->unique();
        $table->unsignedBigInteger('production_order_id'); 
     });
 }

ID 名称不仅仅是“id”的原因是因为我正在从外部 API 导入订单数据。我认为这就是为什么这种关系不起作用但我似乎无法修复它的原因。

ProductionOrder::with('workOrders')->get();

上面为每个生产订单在属性中返回一个空数组work_orders,但是在数据库中肯定有工作订单存在production_order_id

标签: laraveleloquentrelationship

解决方案


production_order_id修复它,必须在关系中添加两倍hasMany

 public function workOrders()
 {
     return $this->hasMany('App\WorkOrder', 'production_order_id', 'production_order_id');
 }

推荐阅读