如何在Laravel Eloquent中更新记录?

时间:2015-09-09 07:50:40

标签: php eloquent laravel-5.1

我是学习Laravel 5的新手。我按照教程操作,我的控制器中有以下代码。我想要的是在我的登录数据库中用ID=10更新用户名。我按照教程和Laravel文档进行操作,但会发生什么呢?它会插入另一条记录而不是更新现有记录。我的代码出了什么问题?

routes.php文件:

Route::get('/users', "PagesController@login");

login.php(model)

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class login extends Model
{
    public $timestamps = false;
    protected $table = 'login';

    protected $fillable = [
        'username',
        'password'
    ];    
}

PagesController.php

<?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\login; //added
    use App\Http\Requests;
    use App\Http\Controllers\Controller;

    class PagesController extends Controller
    {
       public function login()
        {
          $login = new login;
          $login::find(10);
          $login->username ='updated_username';
          $login->save();
        }
    }

2 个答案:

答案 0 :(得分:2)

通过创建新的login对象意味着您正在创建新记录。只需使用login::find()加载现有记录。

class PagesController extends Controller
{
    public function login()
    {
      $login = login::find(10);
      $login->username ='updated_username';
      $login->save();
    }
}

答案 1 :(得分:0)

class PagesController extends Controller
    {
       public function login()
        {
          $login = (new App\Login)->find(10);
          $login->username ='updated_username';
          $login->save();
        }
    }

请记住,您的类名应以大写字母&#34开头;使用App \ Login&#34;而不是&#34;使用App \ login&#34;。您可以选择直接使用&#34; new App \ Login&#34;。

引用该类