我尝试在我的应用中显示new label
,具体取决于产品发布时间。
created_at
到20
days
之后显示新标签。这是我到目前为止所做的,但不确定。
$new = Product::where('created_at', '=<', Carbon::now()->subDays(30));
screenshot
此标签必须仅在前20天显示。
if statement
的刀片中制作$new
? (我的意思是我创建了@if($new)...@endif
它没有工作) my page controller
$products = DB::table('products')
->join('page-views','products.id','=','page-views.visitable_id')
->select(DB::raw('count(visitable_id) as count'),'products.*')
->groupBy('id')
->orderBy('count','desc')
->having('count', '>=', 100)
->get();
PS:我必须在我的模型中添加基于Quezler回答下面添加的代码,即使在$products = Product::all();
这样的普通集合中也会出现同样的错误。
error
Undefined property: stdClass::$new
model
public function getNewAttribute(): boolean
{
return (clone $this->created_at)->addDays(20)->greaterThanOrEqualTo(Carbon::now());
}
答案 0 :(得分:1)
将此添加到您的Product
型号:
public function getNewAttribute(): bool
{
return (clone $this->created_at)->addDays(20)->greaterThanOrEqualTo(Carbon::now());
}
然后在刀片中,您可以在处理产品时@if($product->new)
。
答案 1 :(得分:1)
在控制器的基础上创建日期设置一个新变量,即$ isNew
$created = new Carbon($products->created_at);
$now = Carbon::now();
$isNew = ($created->diff($now)->days < 20)? True: FALSE;
并转到视图。在视图中只需检查
@if($是否新款)?..... @ ENDIF
或者您可以在视图中进行直接比较
@if(\Carbon\Carbon::now()->diffInDays($product->created_at, false) < 20)
//将您的HTML放在这里
@endif