laravel 中未正确获取最后一条记录 ID

Last record id not fetched properly in laravel

我正在尝试检索我在 laravel 6

中订阅的最后一条记录 ID table

以下是我的函数

public function activateApp($id)
    {
        $app = App::where('appId','=',$id)->firstOrFail();
        if($app->payment_option == 'monthly')
        {
            $renewDate = date('Y-m-d', strtotime(date("Y-m-d", strtotime("+30 day"))));
        }
        else
        {
            $renewDate = date('Y-m-d', strtotime(date("Y-m-d", strtotime("+365 day"))));
        }

        $lastdata = DB::table('subscriptions')->orderBy('id', 'desc')->first();
        //dd($lastdata);
        //die();

        //update app table records
        DB::table('apps')
            ->where('appId', $id)
            ->update([
                'status' => $lastdata,
                'renewDate' => $renewDate
            ]);

        return redirect()->route('home');
    }

我用过

$lastdata = DB::table('subscriptions')->orderBy('id', 'desc')->first();

获取 id,但是当我尝试从该值更新我的应用程序 table ststus 列时它似乎无法正常工作,它没有更新甚至没有给出错误..即使'dd' 也不能正常工作。

(整个功能似乎在最后一次获取记录后停止工作)

您正在尝试用整个 $lastdata 对象更新 status

我不知道你的数据库架构,但你可能应该尝试类似

            DB::table('apps')
                ->where('appId', $id)
                ->update([
                    'status' => $lastdata->status,
                    'renewDate' => $renewDate
                ]);

您还可以仔细检查数据库 subscriptions 是否有行并且它不为空。

您将使用订阅对象更新状态字段。还有一件事是您不需要再次检索应用程序对象,因为您已经有了,所以只需更改值并保存即可。

public function activateApp($id) {
    $app = App::where('appId','=',$id)->firstOrFail();
    if($app->payment_option == 'monthly')
    {
        $renewDate = date('Y-m-d', strtotime(date("Y-m-d", strtotime("+30 day"))));
    }
    else
    {
        $renewDate = date('Y-m-d', strtotime(date("Y-m-d", strtotime("+365 day"))));
    }

    $lastdata = DB::table('subscriptions')->orderBy('id', 'desc')->first();

    //update app table records
    $app->status = $lastdata->status;
    $app->renewDate = $renewDate;

    if ($app->save()) {
        return redirect()->route('home');
    } else {
        // show some error page.
    }

}