2016-12-23 39 views
0

我試圖挽救與Laravel save method的關係:Laravel一對多的關係保存方法空屬性

public function storeContact(Request $request) 
{ 
    $user = User::firstOrNew(['email' => $request->input('email')]); 
    $user->save(); 

    $message = new App\Message([ 
     'message' => $request->input('remarks') 
    ]); 

    $user->message()->save($message); 
} 
  • 的var_dump($請求 - >所有)證實了這兩個領域中的要求是可用的。
  • 所有關係都起作用。 hasOne,belongsTo在模型中配置。關係保存像預期的(但消息字段爲空)
  • 當我var_dump($ message),集合中沒有屬性。

我已經試過在模型上可填充和防護,沒有任何影響。這些對於保存方法來說不是必須的,但是因爲它使用了一個完整的Eloquent模型實例。

我在這裏錯過了什麼?

回答

0

我想我找到了罪魁禍首。

當我在模型上使用__construct時,它失敗。當我用__construct實例化一個模型時,沒有變量作爲屬性傳遞。即使__construct是空的。

測試與__construct方法

class Message extends Model 
    { 
     protected $connection = 'system'; 

     public function __construct() 
     { 
     } 
    // ... 
    } 

$message = new App\Message(['remarks' => 'Test remarks']); 

var_dump(message) // does NOT contain attributes! 

的Test2不__construct方法

class Message extends Model 
    { 
     protected $connection = 'system'; 
    // ... 
    } 

$message = new App\Message(['remarks' => 'Test remarks']); 

var_dump(message) // does contain attributes! 

這看起來像在Laravel給我的錯誤。