难道你们都没有遇见过这个问题吗?怎么处理

$model = Customer::select(‘*’);//这样是可以满足下面的判断,但不想要那个select怎么办?
//$model = nwe Customer();//这种根本行不通,下面的条件不执行
!empty($map) && $model->where($map);
!empty($rawStr) && $model->whereRaw($rawStr);

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 12

你可以改成这样 $model = Customer::query()

2年前 评论
qiyeal 2年前
yijiliangfang (楼主) 2年前

你可以改成这样 $model = Customer::query()

2年前 评论
qiyeal 2年前
yijiliangfang (楼主) 2年前

可以试试:github.com/Tucker-Eric/EloquentFil...

利用查询作用域扩展检索功能,提高控制器代码清洁度

2年前 评论

我也很蛋疼这个事,所以我一直用

$query = User::with([]);
if ($type) {
    $query->where('type', $type);
}
$users = $query->get();
2年前 评论
boolstone 2年前
勇敢的心 (作者) 2年前

!empty($map) && $model->where($map); 是公司的要求吗

2年前 评论
如梦又似幻 2年前
人艰不拆 2年前

为什么要这样写

2年前 评论

为啥不用when

2年前 评论

可以看看源码,只要是去查询 他都会 (new static)->newQuery(); 返回的是一个 \Illuminate\Database\Eloquent\Builder的实例, 可以使用model::query() 进入

2年前 评论
porygonCN

Model::query()

2年前 评论

我上个提问也是这个场景,那个不算是不执行,只你执行了得重新接一遍:

$model = nwe Customer ();
if () {
       $model= $model->where($map);
}
dd($model->get());
2年前 评论

没用过 when 吗

2年前 评论

没看懂你想表达什么

2年前 评论
可以直接拿来用!! 放在基类模型里面 这是我最常用的 我个人 when 不太喜欢写闭包就自己组装了一下方法
//辅助 when 构建
public function scopeWhenWhere(Builder $query, bool $is, array $where, array $elseWhere = []) {
    if ($is === true) {
        if (count($where) && $where) {
            $query->where($where);
        } else {
            $query->where($elseWhere);
        }
    }
    return $query;
}
//全相等辅助构建
public function scopeWhenForWhere(Builder $query, array $params, array $fields = []) {
    $where = [];
    $node = 0;
    foreach ($params as $key => $value) {
        $field = (isset($fields[$node]) && !empty($fields[$node])) ? $fields[$node] : $key;
        $node++;
        if (isset($params[$key]) && $params[$key] !== '') {
            $where[] = [$field, '=', $params[$key]];
        } else {
            continue;
        }
    }
    return $query->where($where);
}
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!