日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

php unable to save,php – Laravel save()未定义

發布時間:2024/9/19 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php unable to save,php – Laravel save()未定义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我試圖將我現有的插入方法轉換為查詢范圍,以便我可以重用它們并采用更干的方法.

這就是我想要轉換為Larvel查詢范圍的內容:

$time = new Time;

$time->employee_id = $input['user_id'];

$time->day = Carbon::now()->toDateString();

$time->clock_in = Carbon::now()->toTimeString();

$time->save();

這就是我現在對查詢范圍的看法:

public function scopeClockIn($query, $userID) {

$query->employee_id = $userID;

$query->day = Carbon::now()->toDateString();

$query->clock_in = Carbon::now()->toTimeString();

$query->save();

}

這就是我調用上面的查詢范圍的方法:

$time = Time::clockIn($input['user_id']);

但我得到錯誤:

Call to undefined method Illuminate\Database\Query\Builder::save()

我也嘗試過:

$time = new Time::clockIn($input['user_id']);

但是當我嘗試使用new關鍵字時出現錯誤:

語法錯誤,意外的’clockIn'(T_STRING),期望變量(T_VARIABLE)或’$’

谷歌一直沒有幫助我發現其他問題與相同的錯誤消息,但他們試圖檢索結果而不是插入它們.希望有人在這里可以幫我弄清楚我做錯了什么.

解決方法:

好的,寫得很好的問題.

Laravel使用Builder通過例如數據庫與數據庫進行交互.構造和執行SQL查詢.一旦完成,它將返回您的Time對象 – 或者它們的集合.

當你這樣做時Time :: all()或Time :: where(‘something’,’=’,’something’) – > get(),你沒有使用Time對象而是使用Builder.

范圍在“從數據庫獲取和返回內容”階段應用,這就是您從Builder收到錯誤的原因.你無法保存任何東西 – 因為你仍在構建一個查詢,你實際上并不是一個Time對象的實例.

你的想法很好,把事情變得更小,更清晰通常是一個好主意.它不應該是一個范圍.你想要做的可能是只提供用戶ID并使其成為靜態函數.像這樣的東西:

public static function createFromUserId($userID) {

$time = new static();

$time->employee_id = $userID;

$time->day = Carbon::now()->toDateString();

$time->clock_in = Carbon::now()->toTimeString();

$time->save();

return $time;

}

請注意static關鍵字,這意味著您沒有使用特定對象,而是使用類上的常規函數??.這就是為什么你在后面的問題中得到了語法錯誤::: in Time :: clockIn()表示它是一個靜態方法,但你還沒有使方法成為靜態.

我還確保該方法返回創建的時間,以防您需要對其進行操作.現在,您可以使用用戶ID創建新的Time對象,如下所示:

$time = Time::createFromUserId($userID);

我希望能回答你的問題.

標簽:php,laravel,laravel-5

來源: https://codeday.me/bug/20190608/1201245.html

總結

以上是生活随笔為你收集整理的php unable to save,php – Laravel save()未定义的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。