【问题标题】:How to use the condition in DB->select Laravel如何在 DB->select Laravel 中使用条件
【发布时间】:2018-09-05 05:39:50
【问题描述】:

我想过滤从数据库中获取的列。

我有一个像这样的数组:

$array = array('name', 'year', 'hobbies');

如果它在数组中,则只想从数据库中获取。 喜欢这个代码,但这个代码不起作用。

$query->select(
    if (in_array("name",$array)) {
      'name',
    }
    if (in_array("year",$array)) {
      'year',
    }
    if (in_array("hobbies",$array)) {
      'hobbies'
    }
  );

在 foreach 中进行 db 查询后我不能这样做。

如果您给我任何想法或解决方案,我会非常高兴。 谢谢

顺便说一句:抱歉英语不好。

【问题讨论】:

  • 非常有趣的问题

标签: php sql database laravel


【解决方案1】:

您可以在查询生成器中使用 where。

看看这个例子。

$foo = DB::table('tableName')->where('Column', 'Value')->get();

按照示例过滤结果,但如果您想要过滤列,您可以使用示例

->select('name', 'email as user_email')

对不起,我的英语不好。

【讨论】:

  • 对不起,这不是问题的解决方案。我想过滤我得到的列,列值中没有行。您发布了一个无用的解决方案。感谢您的努力。
【解决方案2】:

你可以使用addSelect函数。

从此代码:

$query->select(
    if (in_array("name",$array)) {
      'name',
    }
    if (in_array("year",$array)) {
      'year',
    }
    if (in_array("hobbies",$array)) {
      'hobbies'
    }
  );

应该是:

   $query->select("id","foo","test"); // foo , test sample columns


   if (in_array("name",$array)) {
      $query->addSelect("name"); // or $query->addSelect(DB::raw("name"));
   }
   if (in_array("year",$array)) {
      $query->addSelect("year"); // or $query->addSelect(DB::raw("year"));
   }
   if (in_array("hobbies",$array)) {
      $query->addSelect("name"); // or $query->addSelect(DB::raw("hobbies"));
   }

 $query = $query->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-20
    • 2020-01-08
    • 2015-10-27
    • 1970-01-01
    • 2018-03-15
    • 2020-02-25
    • 1970-01-01
    • 2021-05-02
    相关资源
    最近更新 更多