在laravel中使用eloquent过滤,显示所有数据开始
Filtering using elequent in laravel, show all data to start
所以基本上我有一个包含大约 20000 行数据的数据表,我有几个不同的过滤器,并且正在尝试找出应用过滤器的最佳方法。我基本上将它们应用于 Elequent 查询,除了 where like 语句最初是 "" 这对于任何有数据的行都很好,除了一些行有 NULL,它不包含在 like "" 语句中。有没有更好的方法我应该这样做?还是我只需要写一些 if 语句来检查是否需要应用过滤器
// Fetch records
$records = IndirectAggregate::orderBy($columnName,$columnSortOrder)
->where('wholesaler', 'like', '%' . $search_wholesaler . '%')
->where('state', 'like', '%' . $search_state . '%')
->where('banner_name', 'like', '%' . $search_banner . '%')
->select('*')
->skip($start)
->take($rowperpage)
->get();
在使用 like 时使用 orWhere 是一个好习惯。
$records = IndirectAggregate::orderBy($columnName,$columnSortOrder)
->where('wholesaler', 'like', '%' . $search_wholesaler . '%')
->orWhere('state', 'like', '%' . $search_state . '%')
->orWhere('banner_name', 'like', '%' . $search_banner . '%')
->select('*')
->skip($start)
->take($rowperpage)
->get();
试试这个查询:
$records = IndirectAggregate::orderBy($columnName,$columnSortOrder)
->where(function($q) use($search_wholesaler){
$q->where('wholesaler', 'like', '%' . $search_wholesaler . '%')
->orWhereNull('wholesaler');
})
->where(function($q) use($search_state){
$q->where('state', 'like', '%' . $search_state . '%')
->orWhereNull('state');
})
->where(function($q) use($search_banner){
$q->where('banner_name', 'like', '%' . $search_banner . '%')
->orWhereNull('banner_name');
})
->select('*')
->skip($start)
->take($rowperpage)
->get();
所以基本上我有一个包含大约 20000 行数据的数据表,我有几个不同的过滤器,并且正在尝试找出应用过滤器的最佳方法。我基本上将它们应用于 Elequent 查询,除了 where like 语句最初是 "" 这对于任何有数据的行都很好,除了一些行有 NULL,它不包含在 like "" 语句中。有没有更好的方法我应该这样做?还是我只需要写一些 if 语句来检查是否需要应用过滤器
// Fetch records
$records = IndirectAggregate::orderBy($columnName,$columnSortOrder)
->where('wholesaler', 'like', '%' . $search_wholesaler . '%')
->where('state', 'like', '%' . $search_state . '%')
->where('banner_name', 'like', '%' . $search_banner . '%')
->select('*')
->skip($start)
->take($rowperpage)
->get();
在使用 like 时使用 orWhere 是一个好习惯。
$records = IndirectAggregate::orderBy($columnName,$columnSortOrder)
->where('wholesaler', 'like', '%' . $search_wholesaler . '%')
->orWhere('state', 'like', '%' . $search_state . '%')
->orWhere('banner_name', 'like', '%' . $search_banner . '%')
->select('*')
->skip($start)
->take($rowperpage)
->get();
试试这个查询:
$records = IndirectAggregate::orderBy($columnName,$columnSortOrder)
->where(function($q) use($search_wholesaler){
$q->where('wholesaler', 'like', '%' . $search_wholesaler . '%')
->orWhereNull('wholesaler');
})
->where(function($q) use($search_state){
$q->where('state', 'like', '%' . $search_state . '%')
->orWhereNull('state');
})
->where(function($q) use($search_banner){
$q->where('banner_name', 'like', '%' . $search_banner . '%')
->orWhereNull('banner_name');
})
->select('*')
->skip($start)
->take($rowperpage)
->get();