如何使用laravel-translatable转换透视值?

时间:2016-12-02 10:14:39

标签: laravel translation

我刚刚开始使用dimsav的laravel-translatable包,它允许使用Eloquent模型从数据库中设置和检索翻译的字符串。它工作得很好,但我仍然无法从belongsToMany关系转换透视值。

我有一个名为Combination的模型定义如下:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Combination extends Model {
   public function product() {
      return $this->belongsTo('App\Product');
   }

   public function product_attributes() {
      return $this->belongsToMany('App\Attribute')->withPivot('value');
   }
}

这是我的属性模型:

namespace App;

use Illuminate\Database\Eloquent\Model;
use Dimsav\Translatable\Translatable;

class Attribute extends Model {
   use Translatable;

   public $translatedAttributes = ['name'];
}

class AttributeTranslation extends Model {
   public $timestamps = false;
   protected $fillable = ['name'];
}

例如,我有一个名为“T-Shirt”的产品,有两个属性:

  1. 颜色
  2. 大小
  3. 本产品有两种组合:

    1. Black / M
    2. Black / L
    3. 这些值作为透视值存储在名为attribute_combination的中间表中,如下所示:

      +--------------+----------------+-------+ 
      | attribute_id | combination_id | value |
      |--------------+----------------+-------|
      | 1            | 1              | Black |
      | 2            | 1              | M     |
      | 1            | 2              | Black |
      | 2            | 2              | L     |
      +--------------+----------------+-------+
      

      使用$attribute->name检索已翻译属性的名称没有问题,但我找不到检索已转换的数据透视值的方法。我试图创建一个名为attribute_combination_translations的表及其AttributeCombination模型,如下所示,但它不起作用。

      namespace App;
      
      use Illuminate\Database\Eloquent\Model;
      use Dimsav\Translatable\Translatable;
      
      class AttributeCombination extends Model {
         use Translatable;
      
         protected $table = 'attribute_combination';
         public $translatedAttributes = ['value'];
      }
      
      class AttributeCombinationTranslation extends Model {
         public $timestamps = false;
         protected $fillable = ['value'];
      }
      

      也许有人使用这个软件包可以帮我解决这个问题吗?

0 个答案:

没有答案