У меня есть текстовый ввод:
{{ Form::text('first_name', $car->basicCustomer->first_name or NULL, ['class' => 'form-control', 'disabled']) }}
Который должен возвращать первое имя, но вместо этого вход имеет значение 1.
Отношения, когда умирают и сбрасываются, возвращаются:
object(Customer)#805 (20) {
["connection":protected] "main_site"
["fillable":protected] array(8) {
[0] "title"
[1] "first_name"
[2] "last_name"
[3] "email"
[4] "telephone_number"
[5] "address"
[6] "post_code"
[7] "company_name"
}
["table":protected] NULL
["primaryKey":protected] "id"
["perPage":protected] 15
["incrementing"] true
["timestamps"] true
["attributes":protected] array(3) {
["first_name"] "John"
["last_name"] "Doe"
["id"] "19854"
}
["original":protected] array(3) {
["first_name"] "John"
["last_name"] "Doe"
["id"] "19854"
etc...
Значение на входе всегда равно 1, даже при вызове last_name и т.д.
Любые идеи, что происходит?
EDIT: исправлена ошибка, удача, необходимая для использования, и если проверить, не было ли отношение не равным нулю в другом представлении:
{{ Form::text('first_name', (!$car->basicCustomer ? NULL : $car->basicCustomer->first_name), ['class' => 'form-control', 'disabled']) }}
Это теперь выводит имя, может ли кто-нибудь объяснить, почему:
или NULL
не работает?
Значение or NULL
интерпретируется как условное выражение. И он возвращает true (1) или false (0).
'test' or null :
boolean true
'' or null :
boolean false
true or null :
boolean true
false or null :
boolean false
В вашем случае вы можете использовать оператор ?:
.
$string ?: null
Это более короткая версия для
$string ? $string : null