Laravel一对多关系保存方法空属性

时间:2016-12-23 23:24:48

标签: forms orm eloquent laravel-5.3

我正在尝试与Laravel save method保存关系:

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($ request-> all)确认请求中有两个字段。
  • 所有关系都有效。 hasOne,belongsTo在模型中配置。保存的关系与预期(但消息字段为空)
  • 一样
  • 当我使用var_dump($ message)时,集合中没有属性。

我已经尝试过可填充和保护模型而没有任何影响。这些对于save方法来说不是必需的,因为它使用完整的Eloquent模型实例。

我在这里缺少什么?

1 个答案:

答案 0 :(得分: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!

没有__construct方法的测试2

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

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

var_dump(message) // does contain attributes!

对我而言,这看起来像Laravel中的一个错误。