我试图在 UserController 中调用此函数 updateImpression() 的路由上调用 AJAX 请求,并且此函数尝试增加存储在 MySQL 中的“用户”表中名为“impressions_cpunt”的计数器列。我尝试使用 Eloquent 仅更新一个特定用户的列。
public function updateImpression()
{
$username = Input::get('username');
$user = User::where('username', '=', $username)->first();
$impressions_count = $user->impressions_count + 1;
// save() method failed to update my database.
// $user->impressions_count = $impressions_count;
// $user->save();
//update() method does not return anything. Any syntax error here?
//$user->update(array('impressions_count' => $impressions_count));
DB::table('users')
->where('username', $username)
->update(array('impressions_count' => $impressions_count));
$user = User::where('username', '=', $username)->first();
return $user->impressions_count;
}
我认为 save() 函数应该首先工作,但我的数据库没有更新并返回原始计数,并且 update() 函数甚至没有从函数返回任何值。这仅在我使用 DB 时有效,但我认为 Eloquent 应该更好用,因为这是 Laravel。我错过了什么或语法有什么问题吗?我知道应该使用 increments() 数据类型,但请允许我在更改任何内容之前解决这个问题。
更新: 这是我使用 save() 方法时在 Debugbar 中显示的数据库查询:
select * from 'users' where 'username'= <test> limit 1
select count(*) as aggregate from 'users' where 'username'= <test>
select count(*) as aggregate from 'users' where 'email'= <test@example.org>