问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

laravel中数据库在哪个文件中配置

发布网友 发布时间:2022-05-02 00:34

我来回答

2个回答

懂视网 时间:2022-05-02 04:55

一.基本
1.配置文件:config/database.php

2.运行原生的sql查询
$users = DB::select(‘select * from users where active = ?‘, [1]);
$results = DB::select(‘select * from users where id = :id‘, [‘id‘ => 1]);

3.insert
DB::insert(‘insert into users (id, name) values (?, ?)‘, [1, ‘Dayle‘]);

4.update
$affected = DB::update(‘update users set votes = 100 where name = ?‘, [‘John‘]);

5.delete
$deleted = DB::delete(‘delete from users‘);

6.通用查询,不返回结果的一些查询,比如删除表
DB::statement(‘drop table users‘);

二.监听查询事件
class AppServiceProvider extends ServiceProvider{
	/**
	* 启动所有应用服务
	*
	* @return void
	*/
	public function boot()
	{
		DB::listen(function($sql, $bindings, $time) {
		//
		});
	}
	....
}

三.事务
1.自动
DB::transaction(function () {
	DB::table(‘users‘)->update([‘votes‘ => 1]);
	DB::table(‘posts‘)->delete();
});

如果闭包函数中执行出错,事务回滚

2.手动
DB::beginTransaction()
DB::rollBack();
DB::commit();

四.多数据库连接
传递给connection 方法的连接名对应配置文件config/database.php 中相应的连接
$users = DB::connection(‘foo‘)->select(...);

$pdo = DB::connection()->getPdo();
获取底层原生的pdo实例

五.查询

1.查询结果集(如果在配置文件中指定了表前缀,table方法中的表名可以不用带表前缀)
a.获取所有记录,table,get
$users = DB::table(‘users‘)->get();

b.取出一行,first
$users = DB::table(‘users‘)->first();

c.获取部分结果,chunk
DB::table(‘users‘)->chunk(100, function($users) {
	foreach ($users as $user) {
		//
	}
});

返回 false 来中止组块的运行
DB::table(‘users‘)->chunk(100, function($users) {
	// 处理结果集...
	return false;
});

d.获取列值列表,lists
$titles = DB::table(‘roles‘)->lists(‘title‘);
foreach ($titles as $title) {
	echo $title;
}

指定键
// 返回一个数组,name字段作为key,title字段作为value
$roles = DB::table(‘roles‘)->lists(‘title‘, ‘name‘);
foreach ($roles as $name => $title) {
	echo $title;
}

2.聚合函数
$users = DB::table(‘users‘)->count();
$price = DB::table(‘orders‘)->max(‘price‘);
$price = DB::table(‘orders‘)->where(‘finalized‘, 1)->avg(‘price‘);


3.指定字段
$users = DB::table(‘users‘)->select(‘name‘, ‘email as user_email‘)->get();

4.不重复结果
$users = DB::table(‘users‘)->distinct()->get();

5.如果你已经有了一个查询构建器实例并且希望添加一个查询列到已存在的 select 子句,可以使用addSelect方法
$query = DB::table(‘users‘)->select(‘name‘);
$users = $query->addSelect(‘age‘)->get();

6.原生语句
$users = DB::table(‘users‘)
->select(DB::raw(‘count(*) as user_count, status‘))
->where(‘status‘, ‘<>‘, 1)
->groupBy(‘status‘)
->get();


六.连接

1.内连接
$users = DB::table(‘users‘)
->join(‘contacts‘, ‘users.id‘, ‘=‘, ‘contacts.user_id‘)
->join(‘orders‘, ‘users.id‘, ‘=‘, ‘orders.user_id‘)
->select(‘users.*‘, ‘contacts.phone‘, ‘orders.price‘)
->get();

2.左连接
$users = DB::table(‘users‘)
->leftJoin(‘posts‘, ‘users.id‘, ‘=‘, ‘posts.user_id‘)
->get();

3.高级连接语句
DB::table(‘users‘)->join(‘contacts‘, function ($join) {
	$join->on(‘users.id‘, ‘=‘, ‘contacts.user_id‘)->orOn(...);
})->get();

可以使用where风格的子句
DB::table(‘users‘)->join(‘contacts‘, function ($join) {
	$join->on(‘users.id‘, ‘=‘, ‘contacts.user_id‘)->where(‘contacts.user_id‘, ‘>‘, 5);
})->get();

六,联合

$first = DB::table(‘users‘)->whereNull(‘first_name‘);
$users = DB::table(‘users‘)->whereNull(‘last_name‘)->union($first)->get();
unionAll 方法也是有效的,并且和union 有同样的使用方法。


七.where语句

1.$users = DB::table(‘users‘)->where(‘votes‘, ‘=‘, 100)->get();
如果是=,可以简写为$users = DB::table(‘users‘)->where(‘votes‘, 100)->get();
可以使用其它操作符来编写where 子句
$users = DB::table(‘users‘)
	->where(‘votes‘, ‘>=‘, 100)
	->get();

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

$users = DB::table(‘users‘)
	->where(‘name‘, ‘like‘, ‘T%‘)
	->get();


2.or
$users = DB::table(‘users‘)
	->where(‘votes‘, ‘>‘, 100)
	->orWhere(‘name‘, ‘John‘)
	->get();

3.and
$users = DB::table(‘users‘)
	->where(‘votes‘, ‘>‘, 100)
	->where(‘name‘, ‘John‘)
	->get();

4.whereBetween/whereNotBetween

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

5.whereIn/whereNotIn
$users = DB::table(‘users‘)
	->whereIn(‘id‘, [1, 2, 3])
	->get();

$users = DB::table(‘users‘)
	->whereNotIn(‘id‘, [1, 2, 3])
	->get();

6.whereNull/whereNotNull
$users = DB::table(‘users‘)
	->whereNull(‘updated_at‘)
	->get();

$users = DB::table(‘users‘)
	->whereNotNull(‘updated_at‘)
	->get();

6.高级where

a.参数分组
DB::table(‘users‘)
	->where(‘name‘, ‘=‘, ‘John‘)
	->orWhere(function ($query) {
		$query->where(‘votes‘, ‘>‘, 100)->where(‘title‘, ‘<>‘, ‘Admin‘);
	})
->get();

等价于:select * from users where name = ‘John‘ or (votes > 100 and title <> ‘Admin‘)

b.exists 语句
DB::table(‘users‘)
	->whereExists(function ($query) {
	$query->select(DB::raw(1))
	->from(‘orders‘)
	->whereRaw(‘orders.user_id = users.id‘);
})
->get();

等价于:
select * from users
where exists (
select 1 from orders where orders.user_id = users.id
)

八.排序
1.orderBy
$users = DB::table(‘users‘)
	->orderBy(‘name‘, ‘desc‘)
	->get();

2.groupBy/having/havingRaw
$users = DB::table(‘users‘)
	->groupBy(‘account_id‘)
	->having(‘account_id‘, ‘>‘, 100)
->get();

havingRaw 方法可以用于设置原生字符串作为having 子句的值,例如,我们要找到所有售价大于$2500 的部分:
$users = DB::table(‘orders‘)
->select(‘department‘, DB::raw(‘SUM(price) as total_sales‘))
->groupBy(‘department‘)
->havingRaw(‘SUM(price) > 2500‘)
->get();

九,限定结果集(mysql的limit)
skip / take
$users = DB::table(‘users‘)->skip(10)->take(5)->get();


十,Insert
1.单条记录
DB::table(‘users‘)->insert(
[‘email‘ => ‘john@example.com‘, ‘votes‘ => 0]);

2.多条记录
DB::table(‘users‘)->insert([
[‘email‘ => ‘taylor@example.com‘, ‘votes‘ => 0],
[‘email‘ => ‘dayle@example.com‘, ‘votes‘ => 0]
]);

3.获取自增ID
根据之前的插入的列值来获取
$id = DB::table(‘users‘)->insertGetId(
[‘email‘ => ‘john@example.com‘, ‘votes‘ => 0]
);

十一.更新
1.普通
DB::table(‘users‘)
->where(‘id‘, 1)
->update([‘votes‘ => 1]);

2.增加/减少,默认步长为1
DB::table(‘users‘)->increment(‘votes‘);
DB::table(‘users‘)->increment(‘votes‘, 5);
DB::table(‘users‘)->decrement(‘votes‘);
DB::table(‘users‘)->decrement(‘votes‘, 5);

指定更新额外列
DB::table(‘users‘)->increment(‘votes‘, 1, [‘name‘ => ‘John‘]);


十二.删除
1.普通
DB::table(‘users‘)->delete()

2.where
DB::table(‘users‘)->where(‘votes‘, ‘<‘, 100)->delete();

3.清空表
DB::table(‘users‘)->truncate();


十三.悲观锁/乐观锁(配合事务)
DB::table(‘users‘)->where(‘votes‘, ‘>‘, 100)->sharedLock()->get();
DB::table(‘users‘)->where(‘votes‘, ‘>‘, 100)->lockForUpdate()->get();

  

Laravel之数据库

标签:des   指定   tac   使用方法   lock   public   文件   blog   func   

热心网友 时间:2022-05-02 02:03

我们使用 mysql 数据库,修改 .env:

DB_HOST=localhost
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

在mysql中创建 laravel数据库

mysql -u root
CREATE DATABASE laravel

查看 mysql 配置:

'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],

在 config 子目录中,包含了全部的配置文件,查看一下。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么一些男性喜欢要求伴侣叫自己爸爸? proteus8中怎么放置引脚标号 ...在proteus里不知道用什么表示?有没有什么proteus中专门的中英文对照... 甜蜜家园郑毅铭是什么身份 甜蜜家园第二季郑毅铭喜欢谁 瑞梦喜智能空调床垫适合人群 小孩可以用智能床垫吗 智能床垫适合哪些人用 我父亲今年59岁,有高血压和颈椎病的病史,最近一段时间感觉一躺下就偏... ...刚从医院治疗回来。我想买个枕头给他,不知买怎样的比较好?_百度知 ... 有什么正规的外汇平台吗 亲子鉴定怎么做,样本怎么采集? 亲子鉴定怎么做需要什么样本 怎样做亲子鉴定? 做亲子鉴定一般都怎么样做 我要作文的好开头、好结尾有评语的初中的!!!急急急急打好了加分_百度知... 100字的写人,记叙,抒情的作文加上评语和收获 抒情散文评语 晚上睡觉压到手、早上起来发现整只手伸不直、无力、怎么办 早上起来右手完全无力,不能握拳,不能穿 手无力怎么办 电饭锅底盘的焦痕怎么清理 电饭煲底座黑了怎么洗 买房选楼层最忌讳什么? 泡沫还能在股市扬威多久 早上起来双手握拳无力 早上起床前总感到 身体乏力,手酸胀是何因 早上起床突然手无力了,还发抖怎么回事? 买房忌讳哪些楼层 早上起来.头昏昏的.手没力气.人又没精神。怎么回事。 求一部电影如何搜索 2017电信套餐资费表 四川的碧螺春和江苏的碧螺春有什么区别 碧螺春和甘露有啥子区别呢? 碧螺春新茶哪个地方香? 优居客的免息装修贷款是怎么做到的呢? 几个月可以吃车厘子 三清茶官 网不知道是哪个? 吃羊肉后多长时间能吃车厘子 优居客的免息装修贷款是什么做到的 三清茶和清胃黄莲丸哪个对去除口臭有效果 吃了黄瓜,间隔多少时间可以吃车厘子? 车厘子可以空腹吃吗 空腹千万别吃这些水果 三清茶官网是哪个 车厘子怎么吃最好 托尔斯泰创作的《战争与和平》描述的是哪段历史事件? 托尔斯泰的长篇历史小说《战争与和平》,其中描写的战争是哪一场战争? 《水浒传》中有三条狗,这三条狗最后的结局如何呢? 百度地图打开后看不到怎么办?? 蛐蛐怎么样养啊 水浒传108条好汉图片和外号