学习笔记-关于laravel批处理及MySQL多表链接查询解析

关于laravel批处理及MySQL多表链接查询解析

一、Larave的批处理

Laravel的批处理使用的是 <B>Eloquent</B>;
用它检索指定表中的指定数据:

表中的数据信息通过在Model中定义指定参数名
<br>
<br>
//数据库链接方式;
protected $connection = 'addr';
<br>
<br>
//表名<br>
protected $table = 'students';
<br>
<br>
//约束主键<br>
protected $primaryKey = 'id';
<br>
<br>
//可被批量赋值的属性;<br>
protected $fillable = ['name', ...];

原代码如下:

namespace App;

use IlluminateDatabaseEloquentModel;

class User extends Model
{	
    protected $connection = 'addr';//数据库链接方式;
    protected $table = 'students';//表名
    protected $primaryKey = 'id';//约束主键	
    protected $fillable = ['name'];//可被批量赋值的属性;	
}
在控制器中引用
    use AppUser;

代码实现:
    查询所有,我那张表中有一万数据将全部输出

    public function testSelect()
    {
        set_time_limit(0);
        $Info = User::all();
        dd($Info);
    }

Collection {#10186 ▼
items: array:10000 [▼
    0 => User {#10187 …26}
    1 => User {#10188 …26}
    2 => User {#10189 …26}
    3 => User {#10190 …26}
    4 => User {#10191 …26}
    5 => User {#10192 …26}
    6 => User {#10193 …26}
    7 => User {#10194 …26}
    8 => User {#10195 …26}
    9 => User {#10196 …26}
    10 => User {#10197 …26}
...

注意: 在批处理中,批量插入是可以的,但条件是值一致,若值不一致则用循环单个插入,那会相当消耗性能; 解决方案就是使用原生的MySQL语句拼接;

更多关于laravel的批处理链接 原文

二、MySQL多表链接查询解析


SELECT
 oi.user_id AS 用户ID,
 ub.bonus_type_id AS 红包类型ID,
 c.type_name AS 红包类型名称,
 count(ub.bonus_type_id) AS 使用次数
FROM
sdx_order_info oi
LEFT JOIN sdx_user_bonus AS ub ON ub.bonus_id = oi.bonus_id
LEFT JOIN sdx_bonus_type AS c ON c.type_id=ub.bonus_type_id
WHERE 1=1
AND ub.bonus_id>0
AND oi.pay_time >= (UNIX_TIMESTAMP('2018-03-09') - 28800)
AND oi.pay_time < (UNIX_TIMESTAMP('2018-03-16') - 28800)
AND oi.pay_status IN (2,3,4) -- 付款状态(2-已付款 3-部分退款)
AND oi.order_status IN (1,2,5,6) -- 订单状态(1-已确认 5-已分单)
GROUP BY oi.user_id,ub.bonus_type_id,c.type_name
ORDER BY oi.user_id ASC

1、需要查询的信息字段除了在 select 中写入之外,还要在最下面的Group By 中写入,若不写入,则在原生SQL语句中会报错。
2、两表之间的关联性 ON 条件一定要具备 <b>单一性,共有性</b>
    还可以多个条件相关联,如:
        ON ub.bons_id = oi.bons_id And ub.user_id = oi.user_ID
3、三表关联方法如上代码所示,不应该将LeftJoin放在最后,那是错误的写法。
4、在完成一个表的查询操作时应该对其进行合理的排序。
5、若导出表,则尽量为.xslx格式,因为office使用的格式是如此,更显合理性和专业性
原文地址:https://www.cnblogs.com/YeYunRong/p/8585666.html