簡體   English   中英

MySQL的創建事件與laravel DB ::聲明

[英]MYSQL CREATE EVENT with laravel DB::statement

這個問題與具有PHP變量綁定的MySQL查詢的Laravels DB :: statement函數處理有關,而不是與PHP的PDO綁定過程有關,在此處可能的重復項中找到了該處理。 Laravel雄辯地在后端使用了PDO,但是DB :: statement函數的結構與您在PDO方法中的使用方法不同。

當條目保存到數據庫時,我試圖讓控制器的存儲功能創建一個mysql事件。 提交表單后,Laravel拋出錯誤

“ SQLSTATE [HY093]:無效的參數編號:綁定變量的數量與令牌的數量不匹配(SQL:每5分鍾執行一次更新事件測試,對傳呼機設置escalation_level = escalation_level + 1 WHERE id =:issue)”。

我正在嘗試重新創建以下MySQL查詢

CREATE EVENT test ON SCHEDULE EVERY 5 MINUTE DO UPDATE issues SET escalation_level = escalation_level + 1 WHERE id = 'Rd8409347-70bb-4e3e-b351-b49c10ce9a2a';

對我來說,我似乎在查詢中有1個變量,然后通過數組傳遞了1個變量,所以我似乎無法使查詢成功。 下面是表單提交給的控制器。 謝謝您的幫助。

IssueController.php

  public function store(Request $request)
{
    //Validate Input
    $request->validate([
       'company_id' => 'string|max:255',
       'message' => 'required|string|max:255' 
    ]);

    //Once the form input has passed validation add input to the database

    $issueData = new Issue();
    $issueData->id = "R" . Uuid::generate(4)->string;
    $issueData->company_id = $request->company_id;
    $issueData->first_name = Auth::user()->first_name;
    $issueData->last_name = Auth::user()->last_name;
    $issueData->user_id = Auth::user()->id;
    $issueData->message = $request->message;


    //Create MySQL event to increment escalation level
    //Event will be named equal to the new page 'R' ID
    //That has just been generated.

    DB::statement('CREATE EVENT test ON SCHEDULE EVERY 5 MINUTE DO UPDATE issues SET escalation_level = escalation_level + 1 WHERE id = :issue_id', array('issue_id' => $issueData->id));

    $issueData->save();

    return redirect('home')->with('status', ['Message sent successfully.', 
        'You can monitor the status of your message from Check Status section']);

}

我在這里的SO帖子的幫助下找到了問題。 Laravel中的某些查詢要求使用未經准備的語句。 我可以通過使用DB :: unprepared這樣解決問題:

        DB::unprepared('CREATE EVENT event_name ON SCHEDULE EVERY 5 MINUTE DO UPDATE issues SET escalation_level = escalation_level + 1 WHERE id = ' . '/'' . $issueData->id . '/'');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM