laravel数据库操作

目录

 

1,连接数据库

2,运行原生 SQL 查询

3,数据库事务

4,查询构造器

<1>获取结果

<2>where子句

<3>聚合

<4>原生表达式

<5>select 指定

<6>排序,限制结果数量

<7>连表查询

<8>增

<9>删除

<10>改

<11>自增与自减


1,连接数据库

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=studyla
DB_USERNAME=root
DB_PASSWORD=zhaoheng

2,运行原生 SQL 查询

// 查询数据
var_dump(\DB::select('select * from users'));

// 删除数据,返回删除的条数
var_dump(\DB::delete('delete from users where id>100'));

// 用insert将原生sql作为第一个参数,绑定作为第二个参数
var_dump(\DB::insert('insert into users (name,email,password) values (?,?,?)',['wangxu','a@qq.com','123456']));

// 更新数据,返回受影响的行数
var_dump(\DB::update('update users set password=1234567 where name=?',['wangxu']));

//运行普通语句。有些数据库语句不会有任何返回值。对于这些语句,你可以使用 DB Facade 的 statement 方法来运行
\DB::statement('drop table users');

3,数据库事务

你可以使用 DB facade 的 transaction 方法在数据库事务中运行一组操作。如果事务的闭包 Closure 中出现一个异常,事务将会回滚。如果事务闭包 Closure 执行成功,事务将自动提交。一旦你使用了 transaction , 就不再需要担心手动回滚或提交的问题:

DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);

    DB::table('posts')->delete();
});

手动使用事务

//手动开始事务
DB::beginTransaction();

$a = DB::delete("delete from user where id =1");
$b = DB::delete("delete from user where id =2");

if($a && $b) {
    //提交事务
    DB::commit();
}else{
    //回滚事务
    DB::rollback();
}

4,查询构造器

Laravel 的数据库查询构造器为创建和运行数据库查询提供了一个方便的接口。

 

<1>获取结果

get 方法获取结果(查询所有数据)

first 方法从数据表中获取一行数据

value 方法将直接返回该字段的值

$users = DB::table('users')->get();

$user = DB::table('users')->where('name', 'John')->first(); 

$email = DB::table('users')->where('name', 'John')->value('email');

<2>where子句

调用 where 最基本的方式是需要传递三个参数:第一个参数是列名,第二个参数是任意一个数据库系统支持的运算符,第三个是该列要比较的值。

$users = DB::table('users')
                ->where('votes', '>=', 100)
                ->get();

还可以传递条件数组到 where 函数中:

$users = DB::table('users')->where([
    ['status', '=', '1'],
    ['subscribed', '<>', '1'],
])->get();

whereBetween 方法验证字段值是否在给定的两个值之间:

$users = DB::table('users')
               ->whereBetween('votes', [1, 100])
               ->get();

<3>聚合

$users = DB::table('users')->count();

$price = DB::table('orders')->max('price');

<4>原生表达式

在查询中使用原生表达式。可以使用 DB::raw 创建一个原生表达式

$users = DB::table('users')
                     ->select(DB::raw('count(*) as user_count, status'))
                     ->where('status', '<>', 1)
                     ->groupBy('status')
                     ->get();

<5>select 指定

select 方法,可以自定义一个 select查询指定的字段:

$users = DB::table('users')->select('name', 'email as user_email')->get();

<6>排序,限制结果数量

通过给定字段对结果集进行排序

$users = DB::table('users')
                ->orderBy('name', 'desc')
                ->get();

限制结果的返回数量

$users = DB::table('users')
                ->offset(10)
                ->limit(5)
                ->get();

<7>连表查询

$users = DB::table('users')
            ->join('orders', 'users.id', '=', 'orders.user_id')
            ->select('users.*', 'contacts.phone', 'orders.price')
            ->get();

<8>增

DB::table('users')->insert(
    ['email' => 'john@example.com', 'votes' => 0]
);
如果要同时获取到id
$id = DB::table('users')->insertGetId(
    ['email' => 'john@example.com', 'votes' => 0]
);

<9>删除

DB::table('users')->where('votes', '>', 100)->delete();

<10>改

DB::table('users')
            ->where('id', 1)
            ->update(['votes' => 1]);

<11>自增与自减

查询构造器还为给定字段的递增或递减提供了方便的方法。此方法提供了一个比手动编写 update 语句更具表达力且更精练的接口。

这两种方法都至少接收一个参数:需要修改的列。第二个参数是可选的,用于控制列递增或递减的量

DB::table('users')->increment('votes');

DB::table('users')->increment('votes', 5);

DB::table('users')->decrement('votes');

DB::table('users')->decrement('votes', 5);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值