Q1。我有一個將屬性轉換爲集合的Eloquent模型。 在此屬性上調用集合的方法不會影響模型值。例如:如預期雄辯鑄造屬性收藏意外行爲
$var = collect();
$var->put('ip', '127.0.0.1');
var_dump($var);
輸出:put()
當使用集合,IAM能夠做到這一點
object(Illuminate\Support\Collection)[191] protected 'items' => array (size=1) 'ip' => string '127.0.0.1' (length=4)
但是,當我在洋洋灑灑模型與鑄造屬性使用,這不能按預期工作
$user = App\User::create(['email'=>'Name', 'email'=>'[email protected]', 'password'=>bcrypt('1234')]);
$user->properties = collect();
$user->properties->put('ip', '127.0.0.1');
var_dump($user->properties);
object(Illuminate\Support\Collection)[201] protected 'items' => array (size=0) empty
這不填充字段。 我認爲創建了另一個集合,所以要按預期工作,我必須將這個新集合分配給我的字段。
像這樣: $user->properties = $user->properties->put('ip', '127.0.0.1');
Q2。是否有合適的方法來默認初始化字段集合(如果字段爲空,則創建一個空集合),而不必每次都手動調用$user->properties = collect();
?
user.php的
class User extends Authenticatable
{
protected $casts = [
'properties' => 'collection',
];
...
}
遷移文件
Schema::table('users', function($table) {
$table->text('properties')->nullable();
});
這真是一個很好的解決方案 – dparoli