方式1:通过DB类操作数据库
测试数据库是否连接成功
<?php namespace App\Http\Controllers\Home; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\DB; class IndexController extends Controller { public function index() { $pdo = DB::connection()->getPdo(); dd($pdo); } }
获取user表所有数据
public function index() { $users = DB::table('user')->get(); dd($users); }
获取user表id等于1的数据
public function index() { $users = DB::table('user')->where('user_id', 1)->get(); dd($users); }
获取user表id大于1的数据
public function index() { $users = DB::table('user')->where('user_id','>', 1)->get(); dd($users); }
方式2:通过模型操作数据库
artisan新建模型:php artisan make:model User
模型最好放在专门的文件夹下面在Http文件夹下面新建Model文件夹存放模型
获取user表中id等于1的数据
控制器中:
<?php namespace App\Http\Controllers\Home; use App\Http\Controllers\Controller; use App\Http\Model\User; class IndexController extends Controller { public function index() { $user = User::where('user_id', 1)->get(); dd($user); } }
模型中需要设置表名:
<?php namespace App\Http\Model; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $table = "user"; }
通过find()方式获取id等于1的数据
控制器中:
<?php namespace App\Http\Controllers\Home; use App\Http\Controllers\Controller; use App\Http\Model\User; class IndexController extends Controller { public function index() { $user = User::find(1); dd($user); } }
模型中需要设置主键:
<?php namespace App\Http\Model; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $table = "user"; protected $primaryKey = 'user_id'; }
修改数据
控制器中:
<?php namespace App\Http\Controllers\Home; use App\Http\Controllers\Controller; use App\Http\Model\User; class IndexController extends Controller { public function index() { $user = User::find(1); $user->user_name = '张三'; $user->update(); //这里save()方法也可以起到修改作用 } }
模型中:
<?php namespace App\Http\Model; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $table = "user"; protected $primaryKey = 'user_id'; public $timestamps = false; }
PS:
laravel在修改和新增数据的时候分别会添加一个updated_at和created_at字段,记录数据更新时间,导致报错。
解决办法1:
在数据库里添加updated_at和created_at字段。
解决办法2就是上面模型中的解决办法:
在模型里禁用时间设置
public $timestamps = false;