Как я могу изменить значение внутри коллекции laravel? - PullRequest
0 голосов
/ 11 апреля 2020

Я так старался изменить значение внутри коллекции, и ничего не произошло

вот мои кадры с датой в html

enter image description here

Я хочу изменить это значение 0 и 1 на «активное» и «неактивное»

Я пытался изменить его на своем контроллере функций и не работал

контроллер. php

public function reportView()
{

    $data = ReportViewAll::paginate(5);
    $reportviewall = $data->map(function($item, $key){
        $key = 'crewprogram_isdisabled';
        ($item = 0) ? $item = 'active' : $item = 'non-active';
        return $item;
    });

    return view('CrewProgram.ReportView.index', compact('reportviewall'));
}

как мне это решить?

и вместо этого изменить его в функции, могу ли я изменить его в модели Eloquent?

Eloquent Модель

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ReportViewAll extends Model
{
    protected $connection = 'sqlsrv2';
    protected $table ='view_mastercrewprogram';
}

Как я могу решить эту проблему?

РЕДАКТИРОВАТЬ

это мой стол, я попробовал кое-что в моем лезвии и все еще не работает

table.blade. php

 <tbody>
    @foreach($reportviewall as $mastercrew)
    <tr>
        <td class="nik">{{$mastercrew->employee_nik}}</td>
        <td class="nik">{{$mastercrew->employee_nama}}</td>
        <td class="nik">{{$mastercrew->crewprogramposition_name}}</td>
        <td class="nik">{{$mastercrew->show_focus_id}}</td>
        <td class="nik">{{$mastercrew->show_name}}</td>
        <td class="nik">{{$mastercrew->crewprogrammemo_placement_id}}</td>
        <td class="nik">{{ \Carbon\Carbon::parse($mastercrew->crewprogrammemo_placement_date)->format(' d-m-Y ')}}</td>
        <td class="nik">{{
          ($mastercrew->crewprogram_isdisabled = '0') ? $mastercrew->crewprogram_isdisabled = 'active' : $mastercrew->crewprogram_isdisabled = 'non-active'
        }}</td>
        <td class="nik">{{$mastercrew->crewprogrammemo_dismissal_id}}</td>
        <td class="nik">{{ \Carbon\Carbon::parse($mastercrew->crewprogrammemo_dismissal_date)->format(' d-m-Y ')}}</td>
    </tr>
    @endforeach
  </tbody>

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Итак, я знаю, что вы решили свою проблему в своем коде, поменяв = для правильного сравнения ==, чтобы вы показали active / non-active в соответствии с запросом. Тем не менее, я хотел бы показать вам несколько разных способов достижения того же результата, но с лучшей читаемостью.

Вариант 1: Ноль - фальси

Я предполагаю, что ваш * Поле 1011 * теперь выглядит следующим образом:

<td class="nik">{{
    ($mastercrew->crewprogram_isdisabled == '0') ? $mastercrew->crewprogram_isdisabled = 'active' : $mastercrew->crewprogram_isdisabled = 'non-active'
}}</td>

Это может быть изменено следующим образом, и вы должны получить тот же результат.

<td class="nik">{{$mastercrew->crewprogram_isdisabled ? 'non-active' : 'active'}}</td>

Так же, как ссылка, правильное слово inactive когда что-то неактивно.

Вариант 2: Добавить метод мутатора к вашей модели

Laravel имеет множество дополнительных функций, которые вы можете сделать на своих моделях чтобы помочь при использовании их в ваших видах лезвия. Один из них называется mutators (см. Документы: https://laravel.com/docs/7.x/eloquent-mutators#introduction).

Это в основном позволяет вам добавлять дополнительные поля в ваши модели, чтобы предотвратить добавление ненужных логик c к вашим блейд-видам. Я рекомендую сделать это, если вы планируете отображать active / non-active и в других местах.

Так что вы можете добавить эту функцию к вашей ReporyViewAll модели:

public function getActiveStatusAttribute() 
{
    return $this->crewprogram_isdisabled ? 'non-active' : 'active';   
}

Тогда в вашем table.blade.php вы можете изменить это поле на:

<td class="nik">{{$mastercrew->active_status}}</td>
1 голос
/ 12 апреля 2020

, чтобы решить проблему, просто используйте '==' вместо '=', возможно, мне нужно поспать

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