2016-07-26 1 views
1

Я хочу установить несколько столбцов с помощью NULL.Как установить несколько ключей с одинаковым значением с использованием Eloquent Model

Я хочу сделать это только с помощью цифровых клавиш, например:

$model->exampleFiller($myKeysArray, null)->save(); 

настоящее время я использую это:

$model->fill([ 
    'key1' => null, 
    'key2' => null, 
]); 

Я ищу лучший способ, у вас есть Это?

ps: это не то, что будет использоваться часто, поэтому я не хотел бы распространять Eloquent Model. Мне просто нужен аккуратный способ установить его один раз.

+0

Так будет проблема. Напишите метод '$ model-> exampleFiller()'! – RiggsFolly

+0

Да, я могу это сделать, я проверю, есть ли у кого-то лучшая идея. Благодарю. –

ответ

2

Просто нашли способ, если кто-то лучше, я буду считать что-то нашел.

$model->fill(
    array_fill_keys($myKeysArray, null) 
)->save(); 

Открыт этот PR, чтобы заполнить этот пробел: https://github.com/laravel/framework/pull/14494

0

Просто закончить метод exampleFiller:

... 
public function exampleFiller($arr, $value) 
{ 
    foreach ($arr as $prop) { 
     if (property_exists($this, $prop)) { 
      $this->$prop = $value; 
     } 
    } 
} 
... 
+0

Может потребоваться изменить некоторые части, потому что Eloquent фактически не устанавливает их как свойства в классе, они все хранятся в массиве 'attributes' ...' if (array_key_exists ($ prop, $ this-> attributes)) {$ this-> attributes [$ prop] = $ value} – user3158900

+0

@ user3158900 - хороший улов и точка. Благодаря! – swatkins

Смежные вопросы