Laravel 一对多关系保存方法空属性
Laravel one to many relationship save method empty attributes
我正在尝试挽救与 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)时,集合中没有属性。
我已经在模型上试过 fillable 和 guarded 没有任何效果。这些对于保存方法来说不是必需的,因为它使用了完整的 Eloquent 模型实例。
我在这里错过了什么??
我想我找到了罪魁祸首。
当我在模型上使用 __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 中的错误。
我正在尝试挽救与 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)时,集合中没有属性。
我已经在模型上试过 fillable 和 guarded 没有任何效果。这些对于保存方法来说不是必需的,因为它使用了完整的 Eloquent 模型实例。
我在这里错过了什么??
我想我找到了罪魁祸首。
当我在模型上使用 __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 中的错误。