0

正如您在下图中看到的那样,shoporder 和 shoporderroutingstepplans 之间的 laravel 关系并非必须如此。



我不知道我到底做错了什么,所以我希望有人能帮助我。在下面的代码中,我在代码中留下了一些字段以使其更易读。

class shoporder extends Model
{
    protected $primaryKey = 'ID';

    protected $fillable = [
        'CADDrawingURL',
        'ID',
        'Costcenter',
        'CostcenterDescription',
        'Costunit',
        'CostunitDescription',
        'Created',
        'Creator',
        'CreatorFullName',
        'Description',
        'ShopOrderParent',
        'ShopOrderParentNumber',
        'ShopOrderRoutingStepPlanCount',
        'Status',
        'SubShopOrderCount',
    ];

    public function shopOrderRoutingStepPlans() {
        return $this->hasMany('App\shopOrderRoutingStepPlan', 'ShopOrder', 'ID');
    }
}

class ShopOrderRoutingStepPlan extends Model
{
    protected $primaryKey = 'ID';
    public $table = "shoporderroutingstepplans";
    protected $fillable = [
        'Account',
        'ID',
        'AccountName',
        'AccountNumber',
        'AttendedPercentage',
        'Backflush',
        'Created',
        'Creator',
        'CreatorFullName',
        'Description',
        'ShopOrder',
    ];

    public function shopOrder() {
        return $this->belongsTo('App\shopOrder', 'ShopOrder', 'ID');
    }
}

这是我为获取控制器中 1 个 shoporder 的关系而执行的代码。

$orders = shopOrder::find('0600959e-6b92-4135-8ea8-1fa2fd92a916')->shopOrderRoutingStepPlans()->get();

在 shoporder 迁移中,我定义了主键:

$table->string('ID')->unique();
$table->primary('ID');

在 shoporderroutingstepplans 迁移中,我如下定义了外键。

$table->string('ID')->unique();
$table->primary('ID');

$table->foreign('ShopOrder')
      ->references('ID')
      ->on('shoporders');
4

1 回答 1

0

您必须切换最后两个参数的顺序:

 return $this->hasMany('App\shopOrderRoutingStepPlan', 'ShopOrder', 'ID');

 return $this->hasMany('App\shopOrderRoutingStepPlan', 'ID', 'ShopOrder');

参数是

  1. 模型,
  2. 链接模型中列的名称,
  3. 模型中列的名称。
于 2018-03-07T08:32:55.193 回答