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 IlluminateSupportFacadesDB;
use AppHttpModelsArticle;

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;

原文地址:https://www.cnblogs.com/bushui/p/14399217.html