ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ~~~ namespace App\Http\Model; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $table='user'; //定义表名 protected $primarykey='user_id'; //定义主键 public $timestamps=false; //是否使用时间戳 true/false自己决定 } ~~~ # 读 & 写连接 有时,您希望项目使用两种数据库——一种负责读,也就是用来执行 select 语句;另一种负责写,用来执行 insert、update 和 delete 语句。Laravel 使之变得轻而易举,无论您是使用原生查询、查询语句构造器还是Eloquent ORM,都会始终使用正确的连接。 具体读 & 写连接的配置方式,看下面的例子可知: ~~~ 'mysql' => [ 'read' => [ 'host' => '192.168.1.1', ], 'write' => [ 'host' => '196.168.1.2' ], 'driver' => 'mysql', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', ], ~~~ # 数据库事务 你可以用 DB 门面的 transaction 方法在一个事务里执行一系列操作。如果事务闭包里抛出异常,那么事务就会自动回滚。如果闭包执行成功,那么事务就会自动提交。使用 transaction 方法就无需手动回滚或者提交事务了: ~~~ DB::transaction(function () { DB::table('users')->update(['votes' => 1]); DB::table('posts')->delete(); }); ~~~ 解决死锁# transaction 方法还要第二个参数可供指定——当死锁发生时,事务最大的尝试次数。一旦超过这个指定次数,就会抛出异常: ~~~ DB::transaction(function () { DB::table('users')->update(['votes' => 1]); DB::table('posts')->delete(); }, 5); ~~~ 手动使用事务# 如果你要完全手动控制事务的回滚和提交,就要用 BD 门面的 beginTransaction 方法了: ~~~ DB::beginTransaction(); ~~~ 使用 rollBack 方法回滚事务: ~~~ DB::rollBack(); ~~~ 最后,使用 commit 方法提交事务: ~~~ DB::commit(); ~~~