where('p_c-6ren">
gpt4 book ai didi

php - 选择空 "where"的查询。十月CMS

转载 作者:行者123 更新时间:2023-11-29 17:37:44 25 4
gpt4 key购买 nike

我使用代码通过 $_GET 进行过滤

    $this['painting'] = Painting::
where('p_price',$p_price)->
where('p_created',$p_created) ->
where('type_id',$type_id) ->
whereHas('artist', function($q)
{
$q->where('artist_slug', '=', $this->param('slug'));
})->get();

网址是 mysite/page.php?type_id=3&p_created=1996 一切正常。

但是如果我有一些空参数,我就没有结果。例如 url 是 mysite/page.php?type_id=&p_created=1996 或 url 是 mysite/page.php?type_id=3&p_created=返回空字符串

现在我使用类似的东西

if (!$p_created and !$type_id){
$this['painting'] = Painting::
whereHas('artist', function($q)
{
$q->where('artist_slug', '=', $this->param('slug'));
})->get();
}
elseif (!$p_created and $type_id){
$this['painting'] = Painting::
where('type_id',$type_id) ->
whereHas('artist', function($q)
{
$q->where('artist_slug', '=', $this->param('slug'));
})->get();
}
elseif ($p_created and !$type_id){
$this['painting'] = Painting::
where('p_created',$p_created) ->
whereHas('artist', function($q)
{
$q->where('artist_slug', '=', $this->param('slug'));
})->get();
}
elseif ($p_created and $type_id){
$this['painting'] = Painting::
where('p_created',$p_created) ->
where('type_id',$type_id) ->
whereHas('artist', function($q)
{
$q->where('artist_slug', '=', $this->param('slug'));
})->get();

}

如何修复它?

最佳答案

我不了解OctoberCMS,也没有看到一个明显的方法来获取基本的查询对象来使用,但是您可以通过执行始终返回 true 的查询来模拟它。像这样的事情:

// Assuming type_id is always a positive integer, no nulls allowed
$this['painting'] = Painting::where('type_id', '>', -1);

然后添加每个条件(如果存在):

if ($this->param('slug')){
$this['painting'] = $this['painting']->
whereHas('artist', function($q){
$q->where('artist_slug', '=', $this->param('slug'));
});
}
if ($p_created){
$this['painting'] = $this['painting']->
where('p_created',$p_created);
}
if ($type_id){
$this['painting'] = $this['painting']->
where('type_id',$type_id);
}

最后得到结果:

$this['painting'] = $this['painting']->get();

您不需要总是执行 $this['painting'] = $this['painting']->where,只需 $this['painting']->where 可能就足够了,具体取决于该对象内部的工作方式。

关于php - 选择空 "where"的查询。十月CMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50181790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com