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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值