Laravel, получи две функции - PullRequest
2 голосов
/ 01 октября 2019

Мне нужна помощь. В таблице " users " есть структура " referrer_id ", " name " и " active». В этой функции, приведенной ниже, я могу получить только имена пользователей в таблице " users ", как мне также получить статус " active "?

public function nnIndicaded() {

   return implode('<li>', User::where('referrer_id', $this->id)->pluck('name')->all());



}

Ответы [ 2 ]

3 голосов
/ 01 октября 2019

В идеале вы должны разделить это между вашим контроллером и блейдом.

SomeController.php

public function index() 
{
   $users = User::where('referrer_id', $this->id)->get();

   // or get only active status
   // $users = User::where('referrer_id', $this->id)->where('status', 'active')->get();

   return view('some.layout',['users' => $users]);
}

some / layout.blade.php

<ul>
    @foreach ($users as $user)
        <li>{{ $user->name }} {{ $user->status }}</li>
    @endforeach
</ul>
1 голос
/ 01 октября 2019

Вы можете пойти по пути, предложенному matticustard.

Однако иногда бывает сложно изменить структуру большого проекта, когда вам просто нужны небольшие изменения. Если ваша цель состоит в том, чтобы получить только тех пользователей, которые имеют «активный» статус и не хотят слишком сильно изменять текущую структуру, вы можете сделать следующее:

public function nnIndicaded() {
   return "<li>".implode(' active</li>,<li>', User::where(['referrer_id' => $this->id, 'status' => 'active'])->pluck('name')->all())."</li>";
}

Кроме того, если вы решите пойти по-другому,вам не нужно выбирать все, вы можете просто получить имя и статус, если это единственные свойства, которые вам нужны, например:

$users = User::where('referrer_id', $this->id)->select('name','status')->get();

На основании вашего комментария выглядит, что у вас поле БД как "Активное"1 для активных пользователей и 0 для неактивных. Также я вижу, что вы хотели бы получать список неактивных пользователей отдельно.

Итак, для этого вы можете передать параметр в функцию следующим образом:

public function nnIndicaded($active=null) {
   $where = ['referrer_id' => $this->id];
   if ($active !== null) {
       $where['Active'] = $active;
   }
   return "<li>".implode(' active</li>,<li>', User::where($where)->pluck('name')->all())."</li>";
}

Затем:

  • nnIndicaded(1) вернет активных пользователей
  • nnIndicaded(0) вернет неактивных пользователей
  • nnIndicaded() вернет всех пользователей
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...