我是Laravel的新人。我正在根据documentation
开发一个Polymorphic Relations
的演示版
我设置了3个表:
--Users
--id
--username
--Posts
--id
--summary
--published
--Images
--id
--link
--alt
--image_id
--image_type
App\Models\Users
public function scopeWithImages()
{
return static::with('images')->get();
}
public function images()
{
return $this->morphMany('App\Models\Images', 'image');
}
App\Models\Posts
public function scopeWithImages()
{
return static::with('images')->get();
}
public function images()
{
return $this->morphMany('App\Models\Images', 'image');
}
App\Models\Images
public function scopeWithUsers ()
{
return static::with('users')->get();
}
public function users()
{
return $this->morphedByMany('App\Models\Users', 'image');
}
public function posts()
{
return $this->morphedByMany('App\Models\Posts', 'image');
}
我通过轻松调用Users
和Posts
模型获得了图片集
我是如何从Images
模型获得用户和帖子的?我收到错误Unknown column 'images.images_id'
答案 0 :(得分:2)
你的关系方法错了它应该是这样的
App\Models\Users
public function image()
{
return $this->morphMany('App\Models\Images', 'image');
}
App\Models\Posts
public function image()
{
return $this->morphMany('App\Models\Images', 'image');
}
App\Models\Images
public function image()
{
return $this->morphTo();
}
方法名称应该是下划线image_id == image()
更喜欢 - https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations
答案 1 :(得分:0)
首先,您的想法是不正确的,因为图像与用户和帖子之间的关系是一对多态的,在这种情况下,您只需要编写$user->images
即可检索属于用户的图像或编写{{1 }}来获取帖子图片。
//但在您的代码中
您想让每个用户或帖子在您的senario中有很多可能是针对该用户或帖子的图像,而您$post->images
则要检索一个帖子的图像
希望这项工作为您