Laravel 数据库查询(查询构造器、模型查询)
数据库的配置在 config/database.php,如果是本地可以直接配置.env 文件:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=root
一、DB数据查询
数据库有一个专用类 DB,引入,可以用它来实现原生查询和构造器查询:
use Illuminate\Support\Facades\DB; use App\Http\Models\Article; public function index() { //原生SQL $article = DB::select('select * from articles'); //查询构造器 $article = DB::table('articles')->get(); }
查询构造器主要通过 DB 类的各种数据库操作方法来实现
$article = DB::table('articles')->find(1);//这个是对象,直接使用return不能输出
//方法一 return response()->json($article); //方法二 return [$article];
PS:这里 DB::第一个使用静态,返回查询对象,然后使用->where 等各种查询方法,这些查询方法返回的还是查询对象,所以可以继续连缀操作。最后当遇到比如:get()返回结果等方法时,停止连缀。所以,返回结果必须放在最后。
二、模型查询
使用 Eloquent ORM 模型来操作数据库,使用命令在 Http 目录下创建模型;
php artisan make:model Http/Models/User //默认在 app 目录
$article = Article::all();
上面使用模型来操作数据后,报错提示数据表是复数:articles。
方法一:由于模型编码规范要求数据表是复数,这里的复数并不是单纯加 s;可能会加 es,可能会加 ies,也可能是 child 编程 children 之类的;
可以使用字符串助手:Str::plural()来判断英文单词的复数情况:
return Str::plural('bus'); //buses return Str::plural('user'); //users return Str::plural('child'); //children
方法二:你可以根据规范去更改数据表名称,或者强制使用现有的数据表名:
protected $table = 'article';
注意:如果有前缀,可以在 database.php 修改添加:laravel_,最终变为:laravel_articles;