【问题标题】:Laravel define join relation as a model relationLaravel 将连接关系定义为模型关系
【发布时间】:2021-07-30 01:32:24
【问题描述】:

我有一个场景:

Movie::join('stream_urls', function ($join) {
        $join->on('stream_urls.movie', '=', 'movies.filename');
});

我想将它定义为模型中的一个函数,因为我想将连接的数据作为 JSON 数组返回。所以我想要这样的东西;

$movie = Movie::where('is_active', 1)
        ->with('urls')
        ->orderBy('movies.id', 'DESC')->get();

如何在模型中定义这个'urls()'函数?

【问题讨论】:

    标签: laravel eloquent eloquent-relationship


    【解决方案1】:

    您在Movie 模型中定义关系。

    这看起来像one to many relationship

    如果你坚持命名约定,你只需要指定类

    hasMany(Child::class);
    

    但由于您使用stream_url.moviemovie.filename 列,您需要将它们指定为可选参数。

    hasMany(Child::class, 'foreign_key', 'local_key');
    

    我假设映射表stream_urls 的模型称为StreamUrl

    class Movie extends Model
    {
        public function urls()
        {
            return $this->hasMany(StreamUrl::class, 'movie', 'filename');
        }
    }
    

    现在您可以使用 Movie::with('urls') 预先加载此关系。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 2021-08-29
      • 2020-04-02
      • 2023-02-20
      相关资源
      最近更新 更多