使用自定义primaryKey时

时间:2017-06-06 15:08:45

标签: php laravel symfony eloquent laravel-5.2

我在一个名为ShipmentOrder的laravel项目中添加了几个模型。为每个模型提供的数据分别由PackNumberOrderNumber组成。我想使用这些作为我的主键,因为提供数据的api确保这些列永远不会为null或非唯一。它们通过api提供的第三个模型相互关联,api具有引用这两个数据的数据,因此我也不必添加外键。

class Shipment extends Model{
    protected $fillable = ['PackNumber', 'Other', 'Attributes', '...']
    protected $primaryKey = 'PackNumber';
    public $incrementing = false;
}

class Order extends Model{
    protected $fillable = ['OrderNumber', 'Other', 'Attributes', '...']
    protected $primaryKey = 'OrderNumber';
    public $incrementing = false;
}

这似乎工作正常,直到我去修补东西。我一直收到这个错误 Symfony\Component\Console\Exception\InvalidArgumentException with message 'Incorrectly nested style tag found.'无论我打电话给哪个型号。

通过this帖子我想到了为每个模型添加以下内容: protected $hidden = 'id'

这使得调用模型并获取其属性成为可能,但是当我呼叫OrderShipment时,我得到以下内容: SymfonyException

我不清楚symfony错误中的消息是什么,除了它似乎无法获取模型的其他属性,但如果我调用\App\Order::first()->OrderNumber我得到OrderNumber ...

我想知道:

  1. 为什么我会修补这种行为。
  2. 如何让它停下来。
  3. 鉴于上述目标,这是否是正确的方法。
  4. 请不要回答“使用代理键”。

    ========== EDIT ==========

    附加是var_dump在其中一个模型的实例上的输出。省略敏感数据,仅删除与问题相关的数据。唯一缺少的是其他属性名称及其内容。否则这就是屏幕上打印的所有内容。我还在上面的模型定义中添加了更多信息。

    vardump1

    vardump2

    vardump3

0 个答案:

没有答案