我刚刚开始使用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”的产品,有两个属性:
本产品有两种组合:
这些值作为透视值存储在名为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'];
}
也许有人使用这个软件包可以帮我解决这个问题吗?