Laravel - Как создать выпадающий список опций рекурсивного выбора - PullRequest
0 голосов
/ 18 января 2020

Я занимаюсь разработкой веб-приложения с Laravel -5,8. У меня есть эта модель:

class Staff extends Model
{
  protected $fillable = [
      'staff_code',
      'manager_id',
      'first_name',
      'last_name',
  ];

 public function manager()
 {
   return $this->belongsTo('App\Models\Staff','manager_id');
 }

 public function fullName()
 {
  return $this->staff_code . ' - ' . $this->first_name . ' ' . $this->last_name;
 }

При создании данных персонала я хочу выбрать менеджера для каждого персонала из таблицы персонала и сохранить его как manager_id в той же таблице, но отобразить как имя менеджера. Кадр из той же таблицы.

Контроллер

public function create()
{
  $managers       =       Staff::all();
  return view('staff.create')
    ->with('managers', $managers);
}

view

<div class="form-group">
<label class="control-label"> Manager:</label>
  <select class="form-control select2bs4" data-placeholder="Choose Manager" tabindex="1" name="manager_id" style="width: 100%;">
  <option value="">Select Line Manager</option>
     @if($managers->count() > 0 )
        @foreach($managers as $manager)
          <option value="{{$manager->id}}">{{$manager->fullName}}</option>
        @endforeach
     @endif
  </select>
</div>

Я заметил, что в выпадающем списке ничего не загружается. Как мне решить эту проблему?

Спасибо.

1 Ответ

0 голосов
/ 18 января 2020

Когда вы делаете $manager->fullName, вы используете отношения Eloquent, которых в этом случае не существует. Вы должны использовать это вместо:

$manager->fullName()

Кроме того, я предлагаю вам использовать Laravel accessor для этого конкретного c случая. В результате у вас будет такой код в модели:

 public function getFullNameAttribute()
 {
     return $this->staff_code . ' - ' . $this->first_name . ' ' . $this->last_name;
 }

Таким образом, мы можем переписать код в представлении следующим образом:

@foreach($managers as $manager)
    <option value="{{$manager->id}}">{{$manager->full_name}}</option>
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...