我的模型中有这个范围:
public function scopeValid($query){
return $query->where('value_from', '<=', Carbon::now()->toDateTimeString())
->where('value_to', '>=', Carbon::now()->toDateTimeString());
}
我尝试做的是在我的刀片valid
或expired
中显示两个文字取决于他们value_from
&amp; value_to
列,但我得到的两种类型都是相同的结果。
我获得有效和过期优惠券的valid
。
这是我尝试的方式:
foreach($coupons as $coupon){
if($coupon->Valid()){
$validation = 'Valid';
}else{
$validation = 'Expired';
}
}
我该怎么办?
my blade view
my full function
public function index()
{
$coupons = Coupon::orderby('id', 'desc')->get();
$categories = Category::all();
foreach($coupons as $coupon){
if($coupon->valid()){
$validation = 'Valid';
}else{
$validation = 'Expired';
}
}
return view('admin.coupons.index', compact('coupons', 'categories', 'validation'));
}
my full model
public function scopeValid($query){
return $query->where('value_from', '<=', Carbon::now()->toDateTimeString())
->where('value_to', '>=', Carbon::now()->toDateTimeString());
}
答案 0 :(得分:2)
在您的情况下,无需使用scope
,但您可以使用accessor
作为已提取的数据:
在你的模特中:
public function getIsValidAttribute()
{
$now = Carbon::now();
return Carbon::parse($this->value_from)->lt($now) && Carbon::parse($this->value_to)->gt($now);
}
最后在blade view
中调用它:
@foreach ($coupons as $coupon
@if($coupon->isValid)
<span>Valid</span>
@else
<span>Expired</span>
@endif
@endforeach
答案 1 :(得分:2)
您正在尝试从查询实例中获取布尔值,访问者更适合这种情况,这里的主要问题是您使用的是自定义日期格式<div class="m-form__group form-group row">
<div class="col-9">
<div class="m-radio-inline mt-3">
<label class="m-radio">
<input type="radio" name="type" value="1" checked> First
<span></span>
</label>
<label class="m-radio">
<input type="radio" name="type" value="2" required=""> Second
<span></span>
</label>
</div>
</div>
</div>
<div class="text-div first">First Content</div>
<div class="text-div second">Second Content</div>
和d-m-Y
方法正在生成整个toDateTimeString
,请尝试使用datetime
进行等效比较:
format
要调用范围,请不要使用大写字母:
public function getValidAttribute($value){
$date = \Carbon\Carbon::now()->format('d-m-Y');
return $this->value_from >= $date && $this->value_to <= $date;
}
希望它对你有所帮助。
答案 2 :(得分:1)
在你的例子中,你甚至没有调用相同的功能,也许你需要改变
df
到
df.foo.str.lower().str.split(' ')... # rest of line from above.
开头。
假设$ coupon是一个集合,我认为你应该将函数改为:
$coupon->Valid()