Laravel Custom Pivot Model缺少字段

时间:2017-10-17 19:51:24

标签: php laravel-5 pivot laravel-5.5

我正在尝试使用自定义Pivot模型,如:

class A extends Model{
    public function b()
    {
        return $this->belongsToMany(B::class)
            ->using(PivotAB::class);
    }

class PivotAB extends Pivot{}

通过关系访问PivotAB时,数据透视表中的附加字段将丢失(从artisan tinker输出):

>>>$q = A::all();
=> Illuminate\Database\Eloquent\Collection {#1385
     all: [
       App\Models\A {#1386
         id: 1             
       },
     ],
   }
>>> $q[0]->b[0]->pivot;
=> App\Models\PivotAB {#1389
     a_id: 1,
     b_id: 1,
   }
>>> $q[0]->b[0]->pivot->custom_field;
=> null

但是当我直接查询枢轴模型时,该字段会被填充:

>>> PivotAB::all();    
=> Illuminate\Database\Eloquent\Collection {#1382
     all: [
       App\Models\PivotAB{#281
         a_id: 1,
         b_id: 1,
         custom_field: "abc",
       },
     ],
   }

我缺少什么?我是否需要在某处声明透视字段?

2 个答案:

答案 0 :(得分:1)

我必须将所有字段添加到与->withPivot('custom_field')的关系中,以便在通过A上的关系查询时填充它们。

不知何故,我将Laravel文档理解为必须使用->withPivot(...)->using(...),但实际上您需要包含两者。

答案 1 :(得分:0)

谢谢@Sloothword!我遭受着同样的错误假设。 “ withPivot”,“ using”和“ as”都可以完美地协同工作。我最终成功使用了以下内容。

re.match(‘[+\-×÷]’,'...')  #Note the added backslash after the +