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));
}
,我得到的錯誤?請幫忙。