0

我需要帮助来解决与处理 laravel 收集方法相关的问题。

我正在创建一个具有courrsecourse episode

我曾经meilisearchcourse_episode表格中搜索。

$query = $request->s;
$episodes = CourseEpisode::search($query)
    ->get();

拿到剧集之后,我就使用了mapreject合集的方法。

$episodes->map(function ($episode) {
        $course = Course::where('id', $episode->course_id)
            ->select('id', 'title', 'slug', 'publish_date_time', 'publishing_status')->first();
        $episode->course = $course;
        return $episode;
})->reject(function ($item) {
        return (Carbon::createFromFormat('Y-m-d H:i:s', $item->course->publish_date_time)->gt(Carbon::now()) || $item->course->publishing_status === 'drafted');
});

我决定拒绝与将来有 publish_date_time 的课程和正在起草的课程有关的剧集。

map方法中,我得到了课程并将其附加到情节中。

我在方法中使用dd()了函数。reject返回正确结果的条件。但reject函数不会过滤结果。

4

1 回答 1

0

试试这样

$episodes->reject(function ($item) {
        return (Carbon::createFromFormat('Y-m-d H:i:s', $item->course->publish_date_time)->gt(Carbon::now()) || $item->course->publishing_status === 'drafted');
})->map(function ($episode) {
        $course = Course::where('id', $episode->course_id)
            ->select('id', 'title', 'slug', 'publish_date_time', 'publishing_status')->first();
        $episode->course = $course;
        return $episode;
});
于 2021-08-27T16:11:28.790 回答