我試圖使用Pusher與Lumen將事件推送到客戶端以獲取數據刷新。 我創建非常簡單的事件:Lumen返回有關已刪除記錄的信息,總是得到ModelNotFoundException
class CarEvent extends Event implements ShouldBroadcast{
use SerializesModels;
public $car;
private $type;
public function __construct(Car $car, $type)
{
$this->car = $car;
$this->type = $type;
}
public function broadcastOn()
{
return ['car'];
}
public function broadcastAs()
{
return $this->type;
}
}
而且我成功fireing它使用Event::fire(new CarEvent($car,"add"));
內推控制檯我的控制,我得到以下事件:
我的問題,當我開始嘗試當記錄被刪除發送事件,下面是我的代碼:
public function deleteCar($id){
$car = $this->cars->findOrFail($id);
$car->delete();
$oldCar = new Car;
$oldCar->id=$id;
Event::fire(new CarEvent($oldCar,"delete"));
return Response::deleted();
}
這總是給人ModelNotFoundException
因爲米給定ID的odel不再存在,這是真的。
我的問題是我如何能夠觸發事件,這將告訴具有特定id的汽車被刪除。我不想創建另一個將擴展Event的類,並且將僅用於刪除,我想使用現有的CarEvent類。
我可以創建Car對象,並設置其屬性Id
,不知怎麼禁用得到休息,如果從數據庫中的數據時,模型序列化?
感謝您的回答。對於臨時解決方法,我已經爲刪除創建了單獨的事件,但您的解決方案看起來更好。我可以建立我的其他活動將延伸的基本事件類嗎?我有C#背景,並開始在流明。我應該如何建立這個班級?我需要一種方法來指定類型和模型,比如C#中的泛型類。理想情況下,我可以將另一個模型傳遞給構造函數。你能否將這個課程添加到你的答案中? – Misiu
@Misiu請參閱最新的答案。 – alepeino
對不起,如此漫長的延遲。但我還有一個相關的問題。我可以克隆對象(汽車在我的情況),這樣我的事件將不僅返回身份證,但全模型。我知道我必須在刪除賽車之前宣佈賽事,之後我必須開始賽車,但這次賽車不會在我的數據庫中。我在嘗試刪除之前嘗試創建克隆,但沒有運氣。我可能必須添加'getRestoredPropertyValue'的修改版本。我應該如何改變它,以便它將返回已傳遞給事件的項目,並且不會嘗試從數據庫中獲取它?這可以通用於其他類型的事件嗎? – Misiu