当前位置: 首页 > 知识库问答 >
问题:

如何获取在电影加热器上播放的所有电影?

宋高谊
2023-03-14

我有以下雄辩的实体:

  • 电影

表结构:

Schema::create('movies', function (Blueprint $table) {
    $table->increments('id');
});

Schema::create('movie_theaters', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name')->index();
    $table->string('slug')->index()->unique();
    $table->string('description')->index()->nullable();
    $table->longText('content')->nullable();

    $table->unsignedInteger('picture_id')->nullable();
    $table->foreign('picture_id')
         ->references('id')
         ->on('media');

    $table->boolean('activated')->default(true);

    $table->timestamps();
});

Schema::create('movie_theater_rooms', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name')->index();
    $table->string('description')->index()->nullable();
    $table->longText('content')->nullable();

    $table->boolean('activated')->default(true);

    $table->unsignedInteger('movie_theater_id');
    $table->foreign('movie_theater_id')
        ->references('id')
        ->on('movie_theaters')
        ->onDelete('cascade');

    $table->unsignedInteger('picture_id')->nullable();
    $table->foreign('picture_id')
        ->references('id')
        ->on('media');

    $table->timestamps();
});

Schema::create('movie_sessions', function (Blueprint $table) {
    $table->increments('id');

    $table->dateTime('starts_in');
    $table->dateTime('ends_in');

    $table->unsignedInteger('movie_theater_room_id');
    $table->foreign('movie_theater_room_id')
        ->references('id')
        ->on('movie_theater_rooms')
        ->onDelete('cascade');

    $table->unsignedInteger('movie_id');
    $table->foreign('movie_id')
        ->references('id')
        ->on('movies')
        ->onDelete('cascade');

    $table->boolean('activated')->default(true);

    $table->timestamps();
});

如果一部电影有多部电影,那么每部电影都有多部电影,而每部电影都属于一部电影。

我试图通过movieTheaterId获取当前在movieTheaterId上播放的所有电影,但由于这是一个长期关系,我无法检索此类收藏。

这就是我尝试过的:

public function scopeGetMoviesShowingTodayOnMovieTheater($movieTheaterId)
{
    return Movie::whereHas('sessions', function ($query) use ($movieTheaterId) {
        // $query->whereDate('starts_in', Carbon::today());

        $query->whereHas('movieTheaterRoom', function ($query) use ($movieTheaterId) {
            $query->where('movie_theater_id', $movieTheaterId);
        });
    });
}

调用App\Models\Movie::getMoviesShowingTodayOnMovieTheater(1)时-

PHP可恢复致命错误:第338行的…/vendor/illumb/support/Str.PHP中的类illumb/Database/elount/Builder的对象无法转换为字符串

我也尝试过使用这个软件包staudenmir/elokent有很多深层次的,比如:


class MovieTheater extends Model {
    use HasRelationships;

    public function movies()
    {
        return $this->hasManyDeep(Movie::class, [MovieSession::class, MovieTheaterRoom::class]);
    }
}

当调用App\Models\MoviTheater::find(1)-

这是输出:

Illumb/Database/QueryException,消息为“SQLSTATE[42S22]:未找到列:1054未知列“字段列表”中的“movie_sessions.movie_theater_id”(SQL:从moviesmovies*,movie\u sessions中选择movie\u sessions电影院sessions上的movie\u sessions=moviesmovie\u sessions\u id内部连接电影院sessionsd=电影院房间电影院会话id其中电影院会话电影院会话id=1)

我错在哪里?

共有2个答案

夹谷辰沛
2023-03-14

如果你想使用staudenmeir/eloquent-has-many-深层,你应该这样做

class MovieTheater extends Model {
    use HasRelationships;

    public function movies()
    {
        return $this->hasManyDeep(Movie::class, [MovieTheaterRoom::class, MovieSession::class]);
    }
}
陶高峻
2023-03-14

例外

类的对象照明/数据库/雄辩/生成器无法转换为字符串.../供应商/照明/支持/Str.php行338

由于未在范围定义中提供$query参数而引发。代码将尝试将电影院id转换为生成器实例,但失败。

尝试将代码重构为:

/**
 * Scope a query to only select movies that are showing in a certain theater.
 *
 * @param  \Illuminate\Database\Eloquent\Builder  $query
 * @param  int  $movieTheaterId
 * @return \Illuminate\Database\Eloquent\Builder
 */
public function scopeGetMoviesShowingTodayOnMovieTheater($query, $movieTheaterId)
{
    return $query
        ->whereHas('sessions.movieTheaterRoom', function ($query) use 
        ($movieTheaterId) {
            $query->whereMovieTheaterId($movieTheaterId);
        });
}

我还添加了点表示法在where语句中查询嵌套关系。

 类似资料:
  • 我想在正在播放时加载视频。

  • 我正在尝试我的第一个MediaPlayer javafx应用程序。我遵循了很多操作方法,但我仍然无法在新应用程序上运行视频。 这有什么不好: 应用程序构建正确,没有触发“文件未找到异常”,但播放器卡在未知状态,凸起的窗口具有白色固定背景。既没有提供任何类型的音频。有什么建议吗?

  • 我想使用eclipse在javafx中创建一个电影播放器。我的代码编译成功,但出现运行时错误。我也尝试使用不同的文件路径。但它并没有解决这个错误。我的代码是 错误是

  • 我正在尝试使用JME3X-JFX播放flv文件,我使用demo类,可以通过http url方法播放他们的文件。我还可以下载他们的flv并使用flv方法播放。但是我似乎不能播放我自己的flv文件(在使用一个网站如keepvid(尝试了几个)从youtube视频url(开放许可证)转换后下载)。 这听起来有点像这个问题,只有黑屏显示,但对我来说,视频声音播放。我尝试使用RichFLV编辑元数据,以类似

  • 活动中有和按钮和。 在WebView上加载“http://youtube.com”。 你可以看到youtube页面,然后点击电影。 电影将在HTML中播放。 单击按钮进行屏幕捕捉。 将捕获的图像设置为ImageView。 如何在WebView上捕获电影? 请帮帮我.

  • 我需要从远程位置读取所有文件并将它们发送到另一个服务,如果成功发送,则删除所有文件。我的代码对于单个文件工作正常,但如果我想在循环中读取所有文件,那么代码不会被执行。 请按以下方式查找代码。在RemoteFileReadImpl类中,我试图读取循环中不起作用的文件。在WebClientUtil类中,我将文件发送到另一个服务。返回成功响应后,我想重命名已读取的文件。