неверное значение выбрать вариант из базы данных

Я создаю функцию обновления с помощью laravel, я пытался передать значение для обновления, но значение не удалось или неверно.

Вот моя таблица sql

id |    name        |            email                |     pic_for
1     Michael             [email protected]                    null
2     John Doe            [email protected]                  1
3     Kelme               [email protected]                     2
4     Munich              [email protected]                    1
5     Phylon              [email protected]                      2

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

Вот мой процесс контроллера

public function updateuser($id)
{
    $users=DB::table('users')->where('id',$id)->get();

    $pic=DB::table('users')->get();

    //dd($id);
    //dd($users);

    //menampilkan data ke view index
    return view('updateuser',['users'=>$users,'pic'=>$pic,'id'=>$id]);

}

Вот мой взгляд. Лезвие

  @foreach($users as $user)                      
 <div class="row">
     <input name="_method" type="hidden" value="PUT"> 
     <div class="col-md-12 pr-1">
         <div class="form-group">
             <label>Name</label>
             <input type="text" class="form-control" name="name" placeholder="Full Name" value="{{ $user->name }}">
          </div>
      </div>

  <div class="col-md-12 pr-1">
     <div class="form-group">
          <label>In Charge</label>

          <select name="in_charge" id="in_charge" >

           @foreach($pic as $pics)
               @if($pics->pic_for != null)
                 <option value="{{ $pics->pic_for}}" selected>{{ $pics->name }}</option>
               @else
               <option value="{{ $pics->id}}">{{ $pics->name }}</option>
               @endif
        @endforeach
        </select>
      </div>
 </div>
 @endforeach

Я хочу, чтобы когда администратор нажимал на пользователя данных, он отображается как база данных

 Name  ; name

 Pic   : pic_for

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

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

What I Want
Name : John Doe (id 2)
Pic For : Michael (id 1) selected value
It has same value with database

For Now
Name : John Doe (id 2)
Pic For : Phylon (id 5) selected value

Вы знаете где код ошибки?

Спасибо


person Ikram Shabri    schedule 06.03.2019    source источник
comment
откуда ты взял идентификатор $? Я не вижу никаких данных, связанных с этим   -  person Ahmed Nour Jamal El-Din    schedule 06.03.2019
comment
Хотите ли вы все из столбца pic_for или только те, у которых! = Null, вы можете добавить в свой запрос ->where('pic_for','!=',null)   -  person Vipertecpro    schedule 06.03.2019
comment
Привет, @ AhmedNourJamalEl-Din, идентификатор $ от я получаю от пользователей $ в контроллере   -  person Ikram Shabri    schedule 06.03.2019
comment
Привет @ViperTecPro, мне нужны данные pic_for, показанные как база данных, и администратор может изменить пользователя pic_for на другой идентификатор   -  person Ikram Shabri    schedule 06.03.2019
comment
так проблема в $pic коллекции? если да, попробуйте это в контроллере dd($pic); после получения данных и опубликуйте вывод. если проблема не в этом, опишите подробнее   -  person Ahmed Nour Jamal El-Din    schedule 06.03.2019
comment
Привет @ AhmedNourJamalEl-Din, зонд находится в выбранном значении в лезвии просмотра, я попробовал ваше предложение, и он показывает весь идентификатор, который, я полагаю, это правда, поэтому я передал значение для просмотра лезвия   -  person Ikram Shabri    schedule 06.03.2019
comment
Почему вы используете $users=DB::table('users')->where('id',$id)->get();? которые всегда возвращают коллекцию модели .. почему бы не использовать $users=DB::table('users')->where('id',$id)->first();, вы можете удалить первый цикл из файла лезвия.   -  person bhavinjr    schedule 06.03.2019
comment
Вы можете удалить обе петли и писать на одной строке. Используйте .. github.com/LaravelCollective/html   -  person bhavinjr    schedule 06.03.2019


Ответы (2)


Измените эту строку и попробуйте

@if($pics->id == $user->pic_for)
 <option value="{{ $pics->pic_for}}" selected>{{ $pics->name }}</option>
@else

Вам нужно проверить pic_for от пользователей

person Shibon    schedule 06.03.2019
comment
Привет, я попробовал ваше предложение, но все равно получаю неправильное значение в выбранной области - person Ikram Shabri; 06.03.2019
comment
Example : Id 2 pic for id 5, it's wrong because id 2 should be pic for id 1 в чем вопрос ??? - person Shibon; 06.03.2019
comment
Чего я хочу ** Имя: Джон Доу (id 2) pic_for: Michael (id 1) ** Имеют такое же значение, что и база данных, на данный момент Имя: John Doe (id 2) Изображение для: Phylon (id 5) - person Ikram Shabri; 06.03.2019
comment
Спасибо шибон, я четко понимаю в чем ошибся - person Ikram Shabri; 06.03.2019
comment
Привет @Shibon, как насчет флажка? Я изменил на основе выбранного кода опции, но он получает неправильное представление - person Ikram Shabri; 21.04.2019

Вы попробуете это:

return view('updateuser',compact(['users']);
person Smit Pipaliya    schedule 06.03.2019
comment
Я отредактировал свой код в вопросе, я попробовал вернуть ваше предложение ('updateuser', compact (['users', 'pic'])); но это не работает - person Ikram Shabri; 06.03.2019
comment
return view('updateuser', compact('users', 'pic')); должно работать - person bhavinjr; 06.03.2019