繁体   English   中英

将MySQL查询转换成Laravel口才

[英]Convert MySQL Query Into Laravel Eloquent

我正在尝试将MySQL查询转换为Laravel口才查询。

下面的代码将选择一行结果,然后在该行中返回weekNum列的值

function currentWeek() {

    $sql = "SELECT DISTINCT weekNum FROM schedule WHERE DATE_ADD(NOW(), INTERVAL -50 HOUR) < gameTimeEastern ORDER BY weekNum LIMIT 1 ";
    $query = $mysqli->query($sql);

    if ($query->num_rows > 0) {

        $row = $query->fetch_assoc();
        return $row['weekNum'];

    }
}

在Laravel的SchedulesController中,这就是我要实现的目标。

public function index()
{

    $schedules = Schedule::where('week', '=', 4)->get();

    return view('schedules.index', compact('schedules'));
}

显然,我不想在一周内进行硬编码。这是我的尝试。

public function index()
{
    $currentWeek = Schedule::distinct()
        ->where('gameTime', '<', Carbon::now()->addHours(100))
        ->orderBy('gameTime', 'desc')
        ->take(1)
        ->get();

    $schedules = Schedule::where('week', '=', $currentWeek->week)->get();

    return view('schedules.index', compact('schedules'));
}

但是我得到这个错误

ErrorException in SchedulesController.php line 25:
Undefined property: Illuminate\Database\Eloquent\Collection::$week

您无法访问属性,因为->get()返回对象的集合。 为此,您只需要一个雄辩模型的对象。

如果只需要一个结果,则可以将->get()替换为->first()以直接接收模型对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM