php unable to save,php – Laravel save()未定义
我試圖將我現(xiàn)有的插入方法轉(zhuǎn)換為查詢范圍,以便我可以重用它們并采用更干的方法.
這就是我想要轉(zhuǎn)換為L(zhǎng)arvel查詢范圍的內(nèi)容:
$time = new Time;
$time->employee_id = $input['user_id'];
$time->day = Carbon::now()->toDateString();
$time->clock_in = Carbon::now()->toTimeString();
$time->save();
這就是我現(xiàn)在對(duì)查詢范圍的看法:
public function scopeClockIn($query, $userID) {
$query->employee_id = $userID;
$query->day = Carbon::now()->toDateString();
$query->clock_in = Carbon::now()->toTimeString();
$query->save();
}
這就是我調(diào)用上面的查詢范圍的方法:
$time = Time::clockIn($input['user_id']);
但我得到錯(cuò)誤:
Call to undefined method Illuminate\Database\Query\Builder::save()
我也嘗試過:
$time = new Time::clockIn($input['user_id']);
但是當(dāng)我嘗試使用new關(guān)鍵字時(shí)出現(xiàn)錯(cuò)誤:
語法錯(cuò)誤,意外的’clockIn'(T_STRING),期望變量(T_VARIABLE)或’$’
谷歌一直沒有幫助我發(fā)現(xiàn)其他問題與相同的錯(cuò)誤消息,但他們?cè)噲D檢索結(jié)果而不是插入它們.希望有人在這里可以幫我弄清楚我做錯(cuò)了什么.
解決方法:
好的,寫得很好的問題.
Laravel使用Builder通過例如數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)進(jìn)行交互.構(gòu)造和執(zhí)行SQL查詢.一旦完成,它將返回您的Time對(duì)象 – 或者它們的集合.
當(dāng)你這樣做時(shí)Time :: all()或Time :: where(‘something’,’=’,’something’) – > get(),你沒有使用Time對(duì)象而是使用Builder.
范圍在“從數(shù)據(jù)庫(kù)獲取和返回內(nèi)容”階段應(yīng)用,這就是您從Builder收到錯(cuò)誤的原因.你無法保存任何東西 – 因?yàn)槟闳栽跇?gòu)建一個(gè)查詢,你實(shí)際上并不是一個(gè)Time對(duì)象的實(shí)例.
你的想法很好,把事情變得更小,更清晰通常是一個(gè)好主意.它不應(yīng)該是一個(gè)范圍.你想要做的可能是只提供用戶ID并使其成為靜態(tài)函數(shù).像這樣的東西:
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;
}
請(qǐng)注意static關(guān)鍵字,這意味著您沒有使用特定對(duì)象,而是使用類上的常規(guī)函數(shù)??.這就是為什么你在后面的問題中得到了語法錯(cuò)誤::: in Time :: clockIn()表示它是一個(gè)靜態(tài)方法,但你還沒有使方法成為靜態(tài).
我還確保該方法返回創(chuàng)建的時(shí)間,以防您需要對(duì)其進(jìn)行操作.現(xiàn)在,您可以使用用戶ID創(chuàng)建新的Time對(duì)象,如下所示:
$time = Time::createFromUserId($userID);
我希望能回答你的問題.
標(biāo)簽:php,laravel,laravel-5
來源: https://codeday.me/bug/20190608/1201245.html
總結(jié)
以上是生活随笔為你收集整理的php unable to save,php – Laravel save()未定义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用matlab编程简单电子琴,基于MAT
- 下一篇: php atime,PHP Direct