2016-09-05 67 views
0

我嘗試創建公司和用戶。創建公司時應該創建消息事件。我註冊觀察員,一切都很好。但用戶需要有密碼和電子郵件(該數據是從表單發送的),但公司表沒有此字段。目前我申報Company模型兩個字段public $tmpEmailpublic $tmpPassword,同時我分配屬性填寫這個屬性。之後,我在觀察員班讀了這些屬性,但對我來說還不夠好。我怎麼能做得更好?創建時的火災事件和另一個記錄

簡單的例子:

class Company extends Model 
{ 
    $fillable = ['company_name', 'phone_number']; 
} 

class CompanyObserver 
{ 
    public function created(Company $company) 
    { 
     print_r($company->company_name); 
     print_r($company->tmpPassword); 
     print_r($company->tmpEmail); 
     $user = new User(['name' => $company->company_name', 'email' => $company->tmpEmail, 'password' => $this->tmpPassword); 
    } 
} 
+0

你在哪裏創建的公司?從響應函​​數? –

+0

目前在測試(TDD :)),最終購買公司將在控制器中創建。 –

+0

請考慮我的答案,就像一個「好」格式化的想法。在評論中壓低令狀之前。在你的單元測試中,你應該只測試模型中的插入。在你的控制器中,你測試公司和用戶在一起 –

回答

0

只是一個想法格式化

在我看來,你正在創建一個模型太多porposes。 Company應該只知道自己。

如果你有一個像從形式的行動方案:

public function actionFromForm(Request $request) { 
    $company = //Save your model 
    $user = new User(['name' => $company->company_name, 'email' => $request->input('tmpEmail'), 'password' => $request->input('tmpPassword')); 
} 
+0

這是很好的,如果我只在控制器中使用它,但我需要自動的,因爲當我想創建公司時,我不會在每個地方創建'User'對象。 '公司'只知道自己,這是觀察者模式在公司上看到的作用和經過一些行動(在我的情況下創建)添加用戶。你現在有'公司'有不必要的信息(關於用戶),但這是我的問題,如何使用觀察員模式來解決問題。 –