方式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;