2
我想为我的产品计数观看次数。为此,我的产品表中有一列view_count
。我试图用事件监听器来实现它。如何统计帖子(Laravel Event Listener)的视图数量?
这是我的事件代码:
ProductWasViewed.php
<?php namespace App\Events;
use App\Events\Event;
use App\Modules\Product\Models\Product;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class ProductWasViewed
{
use SerializesModels;
public $product;
public function __construct(Product $product)
{
$this->product = $product;
}
public function broadcastOn()
{
return [];
}
}
这是我的听众代码
IncrementProductViewCount.php
<?php namespace App\Listeners;
use App\Events\ProductWasViewed;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Modules\Product\Models\Product;
class IncrementProductViewCount
{
public function __construct() { }
public function handle(ProductWasViewed $event)
{
$event->product->increment('view_count');
}
}
EventServiceProvider.php
阵:
'App\Events\ProductWasViewed' => [
'App\Listeners\IncrementProductViewCount',
],
控制器是我过去的事件侦听器:
Type error: Argument 1 passed to App\Events\ProductWasViewed::__construct() must be an instance of App\Modules\Product\Models\Product, instance of stdClass given
如何解决这个问题:
public function singleProduct(Request $request)
{
$name = $request->name;
$product = DB::table('products')
->where('name' , '=', $name)
->where('status','=',1)
->first();
Event::fire(new ProductWasViewed($product));
}
,我得到的错误?请帮忙。