Laravel Eloquent"或者"

时间:2014-08-04 04:35:57

标签: laravel laravel-4

我正在尝试使用此代码检查我的数据库以查看某个商品是否有库存。如果任何一个字段等于零,我希望它返回零。

 if (DB::table('Inventory')
        ->where('type', '=', $id)
        ->where(Input::get('condition'), '=', 0)
        ->orWhere(Input::get('memory'), '=', 0)
        ->orWhere(Input::get('color'), '=', 0)
        ->orWhere(Input::get('accessories'), '=', 0)
        ->orWhere(Input::get('carrier'), '=', 0)
        ->count() = 0)
{
    return Redirect::back()
        ->with('danger', 'This item is currently out of stock');
}

这是我得到的错误:无法在写上下文中使用方法返回值

我只使用了laravel几天,所以在评价这个问题时请记住这一点。

2 个答案:

答案 0 :(得分:1)

这就是你要找的东西:

$input = Input::only('condition', 'memory', 'color', 'accessories', 'carrier');

if ( ! Inventory::where($input + ['type' => $id])->first())
{
    return Redirect::back()
                ->with('danger', 'This item is currently out of stock');
}

答案 1 :(得分:1)

您得到的错误是因为您实际上传递了输入字段的值,而不是给它字段名称,并且您还尝试通过只有一个&#39将值0分配给count() ; ='

这应该是代码:

if (DB::table('Inventory')
        ->where('type', '=', $id)
        ->where('condition', '=', Input::get('condition'))
        ->orWhere('memory', '=', Input::get('memory'))
        ->orWhere('color', '=', Input::get('color'))
        ->orWhere('accessories', '=', Input::get('accessories'))
        ->orWhere('carrier', '=', Input::get('carrier'))
        ->count() == 0)
{
    return Redirect::back()
        ->with('danger', 'This item is currently out of stock');
}

另外,为什么'类型'假设等于$ id ??

*注意:您也可以省略' ='在where字段中,因为它是默认运算符,并且如下所示:->where('color', Input::get('color'))

  • 还有一个,为什么,你不使用ORM吗? Eloquent绝对可以处理这类查询。