get()方法之后不保存模型(Laravel,PHP)

时间:2016-02-18 19:37:41

标签: php laravel

我使用get()方法从数据库中检索模型。当我想使用保存按钮修改字段时,我收到了该错误:调用未定义的方法Illuminate \ Database \ Eloquent \ Collection :: save();

这是我的代码:

public static function authenticate($token='randomToken'){
$u = User::where('token',$token)// $token)
    ->get(['token']);
if ($u->count()==1){//User is authenticated
    $u->token = User::getGUID();
    $u->save();
    return true;
}
else {
    return false;
}
}

public static function getGUID()
{
if (function_exists('com_create_guid')) {
    return com_create_guid();
} else {
    mt_srand((double)microtime() * 10000);//optional for php 4.2.0 and up.
    $charid = strtoupper(md5(uniqid(rand(), true)));
    $uuid = substr($charid, 0, 8)
            .substr($charid, 8, 4)
            .substr($charid, 12, 4)
            .substr($charid, 16, 4)
            .substr($charid, 20, 12);
    return $uuid;
}
}

1 个答案:

答案 0 :(得分:0)

将您的查询更改为

$u = User::where('token',$token)// $token)
     ->first(['token']);

get方法为您提供了一个对象数组,因此无法像您一样直接对其进行更新/保存。但是使用first()它只能从数据库中获得一条记录,因此更容易保存或更新它。