首页 > 解决方案 > Laravel 分享模型和与孩子的关系

问题描述

我有 3 个模型(媒体、漫画、电影),媒体是基本模型,其他的是孩子(漫画、电影)。媒体模型有自己的表( medias ),由 id、title、synopsis 组成。

我曾经在 MediaController 中访问媒体模型

Media::all();

媒体模型功能

genre()
language()
actor()

媒体模型如何能够共享所有事物包括功能关系。比方说

$medias = Media::all();

return $medias->genre;

漫画和电影模型。

$comics = Comic::all();

return $comics->genre;

所以我不会为每个模型创建每个关系函数,到目前为止,我可以通过将表设置为子模型内的媒体表来访问媒体模型内的表。

// comic, movie model
protected $table = 'medias';

// comic controller
$comics = Comic:all();
return $comics;

// $comics->genre ERROR

但我无法访问所有媒体功能关系,如流派、演员等。

标签: laravel

解决方案


您可以阅读有关特征的信息。它允许您附加到任何模型,并且它会自动扩展您在 Trait 类中拥有的任何功能。例如:

<?php

namespace App;

trait HasAccountTrait
{
    public function account()
    {
        return $this->belongsTo(Account::class);
    }
}
<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasAccountTrait;
    
    ...
}

推荐阅读