Почему мое состояние не работает правильно?PHP Laravel - PullRequest
0 голосов
/ 08 октября 2018

ПРИМЕЧАНИЕ: Перед моим взглядом у меня есть еще один вид, который показывает всех животных и классы таблиц животных и классов.И в этом представлении у меня есть кнопка, которая показывает более конкретные детали, когда я нажимаю на конкретную запись.

Это кнопка, которая перенаправляет на мой взгляд.Мы будем называть это представление представлением «Сведения о животных».

Представление «ДЕТАЛИ ЖИВОТНЫХ».

У меня есть условие в моем представлении, где предполагается, что сравниваются 2 полязначения между 2 таблицами.Таблица Животные и таблица Классы.

Это условие.

<!--TABLE ANIMALS DETAILS IN MY VIEW-->
<!--THEAD-->
<tbody>     
    <tr>
        <td>{{$animal->id}}</td>
        <td>{{$animal->name}}</td>
        <td>{{$animal->area}}</td>

            @if($animal->animal_class_id == $class->id)
                <td>{{$class->name}}</td>
            @endif
    </tr>
</tbody> 

Я пытаюсь сравнить значения между animal_class_id (из таблицы Животные) и id (из таблицы Classes) и затем показать соответствующее имя класса.

Но Это не сработает, Это сравнит id (из таблицы Животные) и animal_class_id (из таблицы тоже животные) .

Почему мое состояние не сравнивает поля, которые я пытаюсь сравнить?

Также я поставлю свой контроллер, функция show()

public function show($id){

    $animal = AnimalNew::find($id);

    $class = AnimalClass::find($id);

    $habitat = Habitat::all();

    return view('animals.ShowAnimalsDetails',  compact('animal', 'class', 'habitat'));

}

Может быть, я могу выполнить условие в функции show(), где я могу сравнить значения между полями: animal_class_id из таблицы животных и id из таблицы Classes.

Например, у меня есть такие записи:

СТОЛОВЫЕ ЖИВОТНЫЕ

id|name       | animal_class_id

1 |Lion       | 1
2 |Tiger      | 1
3 |Salamander | 2
4 |Sparrow    | 3
5 |Ant        | 4

И ТАБЛИЦА Классы

id| name

1 | Mammals
2 | Amphibians
3 | Birds
4 | Insects

Работает только с первой записью, где 2 id соответственно имеют одинаковые значения.В этом случае у Lion тоже есть id = 1 и animal_class_id = 1.

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

1 Ответ

0 голосов
/ 09 октября 2018

В вашей функции показа вы найдете $ class и $ animal по одному и тому же идентификатору, но это не так, вы можете найти $ animal по идентификатору и $class = AnimalClass::where('id', $animal-> animal_class_id)->first();

Но лучший способ - это использоватьОтношение oneToMany: https://laravel.com/docs/5.7/eloquent-relationships#one-to-many

В файле вашей модели (AnimalClass.php) добавьте:

public function animalNews() {
  return $this->hasMany('App\AnimalNews');
}

И в файле вашей модели (AnimalNew.php) добавьте:

public function animalClass() {
  return $this->belongsTo('App\AnimalClass');
}

По виду:

<!--TABLE ANIMALS DETAILS IN MY VIEW-->
<!--THEAD-->
<tbody>     
  <tr>
    <td>{{$animal->id}}</td>
    <td>{{$animal->name}}</td>
    <td>{{$animal->area}}</td>
    <td>{{$animal->animalClass()->first()->name}}</td>
 </tr>

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