Laravel щипать с пользовательским методом от модели - PullRequest
0 голосов
/ 29 июня 2018

Я использую Laravel 5.6. У меня есть таблица users и поля firstname и lastname.

В моей User модели у меня также есть эта функция

public function name()
{
    return $this->firstname . ' ' . $this->lastname;
}

А теперь в другом контроллере я хочу создать выпадающее меню со всеми пользователями. Но я хотел бы отобразить name(), а не только имя / фамилию.

Я сейчас использую это

$users = \App\User::pluck('lastname', 'id');
return view('myview', compact('MY_collection' , 'users'));

И, на мой взгляд ( коллективный / html )

{!! Form::select('user', $users, isset($user) ? $MY_collection->user: null,  ['class' => 'form-control']) !!}        

Возможно ли использовать pluck с функцией метода? Или я должен сделать что-то еще?

Мне также известно о решении accessor , но у меня нет атрибута name в базе данных, поэтому он не работает.

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

Помимо объявления имени средства доступа, начинающегося с " get " и заканчивающегося Атрибутом ( camelCase) : getFullNameAttribute === полное_имя в отрыве.

Вы должны добавить аксессор к $ append :

protected $appends=['<your Accessor name>']
//protected $appends=['full_name']
//usage:
//$this->full_name

массив $ appends получает средства доступа для добавления к форме массива модели.

затем используйте его:

collect(json_decode($modelName->tojson(),true))->pluck('full_name','id') 
0 голосов
/ 29 июня 2018

Вы можете объединить имя и фамилию следующим образом.

$user = App\User::select(DB::raw('CONCAT(firstname, ", ", lastname) AS full_name'),'id')->pluck('full_name','id');
0 голосов
/ 29 июня 2018

Доступными могут быть любые имена, которые вы выберете, они должны начинаться с get и заканчиваться Attribute:

public function getNameAttribute() {
    return $this->firstname . ' ' . $this->lastname;
}

$user->name

// this will give the result as above
public function getBlahBlahBlahAttribute() {
    return $this->firstname . ' ' . $this->lastname;
}

$user->blah_blah_blah

Любой из них должен работать с отрывом.

User::get()->pluck('name');

$user->setAppends(['name']);
$user->pluck('name');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...