Php Laravel中的多态关系

Php Laravel中的多态关系,php,laravel,laravel-5,Php,Laravel,Laravel 5,我想了解拉威尔的多态关系。我知道它在原则上是如何工作的,但在这一部分中,Laravel中措辞的选择并不直观。考虑到这个例子 名称空间应用程序 use Illuminate\Database\Eloquent\Model; class Like extends Model { /** * Get all of the owning likeable models. */ public function likeable() { ret

我想了解拉威尔的多态关系。我知道它在原则上是如何工作的,但在这一部分中,Laravel中措辞的选择并不直观。考虑到这个例子

名称空间应用程序

use Illuminate\Database\Eloquent\Model;

class Like extends Model
{
    /**
     * Get all of the owning likeable models.
     */
    public function likeable()
    {
        return $this->morphTo();
    }
}

class Post extends Model
{
    /**
     * Get all of the product's likes.
     */
    public function likes()
    {
        return $this->morphMany('App\Like', 'likeable');
    }
}

class Comment extends Model
{
    /**
     * Get all of the comment's likes.
     */
    public function likes()
    {
        return $this->morphMany('App\Like', 'likeable');
    }
}
比如说,你是如何把普通英语句子的词形加进去的?是“属于”吗?还有很多,有很多?进一步说,

$post = App\Post::find(1);

foreach ($post->likes as $like) {
    //
}

$likeable = $like->likeable;


morphToMany and morphByMany

如何用通俗易懂的英语描述?

多态关系意味着一个对象可以与多种类型的对象有关系。这是由数据库中的两个字段决定的,而不是通常看到的典型的一个外键字段。 使用问题中包含的代码,扩展模型类的任何类型的对象都可以与类似对象建立关系。因此,你可以有评论和帖子,可以有喜欢他们。例如,在likes表中,您可能有“likable_type”为“post”且“likable_id”为1或“likable_type”为“comment”且“likable_id”为4的行