If statement 允许用户使用laravel 5.1仅对产品进行一次投标

If statement 允许用户使用laravel 5.1仅对产品进行一次投标,if-statement,eloquent,laravel-5.1,logical-operators,laravel-blade,If Statement,Eloquent,Laravel 5.1,Logical Operators,Laravel Blade,完成这项工作需要简单的逻辑,我祈祷专家的帮助。我目前正在尝试一种方法,对我正在开发的一个竞价网站实施限制,其简单之处在于:用户不能对一个产品进行多次竞价。如果用户再次点击该产品,他将收到一个响应页面,提示用户之前曾对该产品进行过投标 这是刀片的形式: <p><h3>{!! ucfirst($product->productname) !!}</h3></p> @if(Auth::user()->id ===

完成这项工作需要简单的逻辑,我祈祷专家的帮助。我目前正在尝试一种方法,对我正在开发的一个竞价网站实施限制,其简单之处在于:用户不能对一个产品进行多次竞价。如果用户再次点击该产品,他将收到一个响应页面,提示用户之前曾对该产品进行过投标

这是刀片的形式:

  <p><h3>{!! ucfirst($product->productname) !!}</h3></p>

            @if(Auth::user()->id === $product->user_id)
                <p>Sorry, you posted this product, you cannot quote on it.</p>

            @else
            <p>{!! Form::label('Higest Price') !!}</p>
            <p>{!! Form::number('price', Input::old('price')) !!}</p>
            <p>{!! Form::textarea('comments', Input::old('comments')) !!}</p>
            <p>{!! Form::hidden('product_id', $product->id) !!}</p>
            <p>{!! Form::hidden('company_id', $product->company_id) !!}</p>
            <p>{!! Form::hidden('user_id', $product->user_id) !!}</p>

            <p>{!! Form::submit('ADD QUOTE') !!}</p>
        @endif
        {!! Form::close() !!}

它没有增加限制。它允许用户反复引用产品。请帮忙。

您的方法有很多问题,首先,我会选择产品模型中的
canQuote
方法,而不是直接在blade中进行比较

function canQuote($user_id) {
    return static::where('user_id', $user_id)->where('id', $this->attributes['id'])->count() === 0;
}
接下来在store方法中,与其调用
all()
并检查一个可能会在大型数据库中出错的循环,为什么不添加另一个方法来检查用户是否在使用雄辩功能之前发表了评论

function canQuote($user_id) {
    return static::where('user_id', $user_id)->where('id', $this->attributes['id'])->count() === 0;
}