Laravel对象无法正常工作

时间:2014-11-22 10:27:59

标签: php laravel laravel-4

我有:

public function fetchProducts($filters = array()) {
    print_r($filters);
    $Product = new Product;
    if (array_key_exists('search', $filters))
        $Product->where('name', 'LIKE', '%'.$filters['search'].'%');
    if (array_key_exists('type', $filters))
        $Product->where('type_id', 1);
    if (array_key_exists('brand', $filters))
        $Product->where('brand_id', $filters['brand']);

    $Product->get();
    return $Product;
}

但无论什么过滤器进来它都会返回所有产品并且似乎忽略了所有产品。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

可以使用

public function fetchProducts($filters = array()) {
print_r($filters);

$Product_query = Product::select('//values'); // i have mostly used like this
if (array_key_exists('search', $filters))
    $Product_query ->where('name', 'LIKE', '%'.$filters['search'].'%');
if (array_key_exists('type', $filters))
    $Product_query ->where('type_id', 1);
if (array_key_exists('brand', $filters))
    $Product_query ->where('brand_id', $filters['brand']);

$Product  =  $Product_query ->get();
   //or
$Product  =  $Product_query ->paginate();   //can also pass the paginate value like paginate($perPage)
return $Product; 
}

评论变更......

答案 1 :(得分:0)

现在,您正在调用Product模型的实例上的位置。您想要做的是在查询构建器实例上调用它。您可以先拨打query()

$Product = Product::query();

if (array_key_exists('search', $filters))
    $Product->where('name', 'LIKE', '%'.$filters['search'].'%');
if (array_key_exists('type', $filters))
    $Product->where('type_id', 1);
if (array_key_exists('brand', $filters))
    $Product->where('brand_id', $filters['brand']);

$Product->get();