Laravel:当模型的主键变为slug时,如何定义关系



我喜欢定义多对多多态关系,就像laravel文档中提到的那样,但有一点不同,我喜欢将主键改为slug。我在protected $primaryKey = 'slug'的模型中这样做,但当我这样做时,我再也无法检索关系了。我想我必须更改morphToManymorphedByMany方法的参数才能解决这个问题。然而,我不知道该怎么做。我将感谢你的帮助。

posts
id - integer
name - string
slug - string (primary key)
videos
id - integer
name - string
tags
id - integer
name - string
taggables
tag_id - integer
taggable_id - integer
taggable_type - string

这就是它的样子。

// morphToMany($related, $name, $table = null, $foreignPivotKey = null,
$relatedPivotKey = null, $parentKey = null,
$relatedKey = null, $inverse = false)

所以在你的Post模型中试试这个。

class Post extends Model
{
public function tags()
{
return $this->morphToMany(Tag::class, 'taggable', null, null, 'taggable_id');
}
}

希望这对你有帮助。

最新更新