Laravel 5.5 中的数据透视列访问器

Accessor for Pivot-Column in Laravel 5.5

我的数据库是这样的:

菜肴 (id, image)

dish_location (location_id, dish_id, dishcard_sharing)

地点(身份证,姓名)

imagedishcard_sharing都是像/images/1234/123123.jpg这样的路径。对于 dishes.image-column,我刚刚添加了一个访问器来添加 S3-url。现在我也需要 dish_location.dishcard_sharing 列 这样的访问器。但是在哪里实施呢?

<?php

namespace App\Models;

use DB;
use Illuminate\Database\Eloquent\Model;
use Grimzy\LaravelMysqlSpatial\Types\Point;
use App\Models\DishLocationPivot;

class Dish extends Model
{
    public $table_name = 'dishes';

    public function locations() {
        return $this
          ->belongsToMany('App\Models\Location', 'dish_location', 'dish_id', 'location_id')
          ->withPivot(['dishcard_sharing']);
    }

    /* Accessors */
    public function getImageAttribute($value) {
        return config('filesystems.store_url_prefix') . $value;
    }

    public function scopeFinalize($query) {

      // Dish Card?
      $query->addSelect('dish_location.dishcard_sharing AS dishcard_sharing');
      return $query;
    }
}

一个选项是创建一个新的 class 来扩展 Pivot:

use Illuminate\Database\Eloquent\Relations\Pivot;

class DishLocation extends Pivot {
   ...
}