【问题标题】:How to build Laravel Eloquent for Query String from URL?如何为来自 URL 的查询字符串构建 Laravel Eloquent?
【发布时间】:2015-02-17 09:14:38
【问题描述】:

我是 Laravel 的新手,

来自url的查询字符串可能是三种

  1. “过滤器”和“状态”:http://localhost/products?filter=productName&value=Test+Product+1&status=A&action=Filter+Result
  2. 仅“过滤器”,“状态”将为空:http://localhost/products?filter=productName&value=Test+Product+1&status=&action=Filter+Result
  3. “仅状态和“过滤器”将为空:“过滤器”和“状态”http://localhost/products?filter=&value=&status=A&action=Filter+Result

现在我可以从控制器访问查询字符串 $inputQ = Request::input()

在普通的 php 中,我可以像下面这样简单

$sql = 'SELECT * FROM products WHERE 1 = 1';

if(isset($_REQUEST['filter']) && $_REQUEST['filter'] != '' && $_REQUEST['value'] != ''){
$sql .= 'AND `'.$_REQUEST['filter'].'` = "'.addslashes($_REQUEST['value']).'"';
}

if(isset($_REQUEST['status']) && $_REQUEST['status'] != ''){
$sql .= 'AND `status` = "'.addslashes($_REQUEST['status']).'"';
}

$res = mysql_query($sql);

现在我需要构建 Laravel Eloquent 请帮助我。

【问题讨论】:

标签: mysql laravel laravel-4 eloquent


【解决方案1】:

我认为您正在寻找这样的东西?我没有测试它,但我想它应该可以工作。

$query = DB::table('products')->where(1, '=', 1);

if(Input::has('filter') && Input::has('value')){
    $query->where(Input::get('filter'), '=', Input::get('value'));
}

if(Input::has('status')){
    $query->where('status', '=', Input::get('status'));
}

$res = $query->get();

【讨论】:

  • 感谢代码,如果我使用 $query = ProductModel::where(1, '=', 1);像这样它不起作用为什么?
  • 这段代码有效吗?我刚刚将您的原始代码翻译为 laravel 查询。 laravel.com/docs/4.2/queries。 ProductModel::where(...) 将不起作用,因为它总是返回一个对象数组或一个对象。
猜你喜欢
  • 2018-06-13
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 2012-09-27
  • 2022-01-17
  • 2021-08-17
相关资源
最近更新 更多