2016-08-01 2 views
0

Когда я создаю новую запись в моей модели вентилятора, в то же время, когда я создаю новую запись Fan, я хочу использовать новое значение ID в другом столбце. Я пытаюсь сделать это все сразу и не иметь другого способа вернуться и обновить запись.Laravel Создать значение записи и использования ID в другом столбце

$fan = Fan::create([ 
    'display_name' => $displayName, 
    'bio' => $bio, 
    'logo_url' => $logoUrl, 
    'algolia_id' => 'fan_'??, // I want to replace ?? with this record's ID value. 
]); 

Я пробовал $ fan, но не работает, так как эта переменная еще не создана. Я не могу использовать Auth, потому что ID не является идентификатором пользователя Auth.

Спасибо!

+0

Просто из любопытства, почему вы хотите это сделать? Конечно, если второе поле просто содержит идентификатор и суффикс/префикс, вы можете сделать это за пределами базы данных в каждой модели, используя функции larsvels 'appends'. –

+0

Это действительно для Алголии, мне нужно назначить уникальный идентификатор для каждой записи. Когда я создаю новую запись, Algolia обновит мой индекс, но у меня возникнут проблемы с обновлением этой записи в индексе после ее создания. Итак, я бы хотел, чтобы все это было сделано одним махом. –

ответ

1

Я сомневаюсь, что вы можете автоматически сделать это, вы должны сделать это в 2 этапа:

$fan = Fan::create([ 
    'display_name' => $displayName, 
    'bio' => $bio, 
    'logo_url' => $logoUrl 
]); 

$fan->algolia_id = 'fan_' + $fan->id; 
$fan->save(); 

Тем не менее, это не большой проект базы данных, вы бы скорее хотели бы построить algolia_id поле, когда вам нужно использовать его, так как вы сохранили бы дублируемое значение (id и algolia_id те же, за исключением fan_).

+0

Правильно, я хочу, чтобы они были выполнены в одно и то же время, или algolia_id придется обновлять позже, что может вызвать проблемы. Я предполагаю, что я могу назначить приращение максимального ID уже в БД переменной и использовать это, поскольку это все равно будет соответствовать новому идентификатору. –

+0

Я бы не рекомендовал, что если вы введете новое значение между тем, как вы получите максимальный ID, и вы создадите новый 'Fan'? Это не сработает. Я боюсь, что двухэтапное решение является единственным возможным: / – AntoineB

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