为什么我的状况无法正常工作? PHP Laravel

时间:2018-10-08 19:03:10

标签: php laravel

  

注意:在我看来之前,我还有另一个视图来显示表中动物和类的所有动物和类。在该视图中,我有一个按钮,当我单击特定记录时,该按钮显示了更多特定详细信息。

     

这是重定向到我的视图的按钮。我们将此视图称为“动物详细信息”视图。

“动物细节”视图。

我认为有一个条件是假设要在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(表类)之间的值,然后显示相应的类名称。

但是它不起作用,它会比较 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

例如,我有以下记录:

桌兽

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

它仅适用于第一个记录,其中两个id分别具有相同的值。在这种情况下,Lion的ID也为1,而animal_class_id的ID也为1。

但是正如我之前说的,我想比较 Table Animals animal_class_id {{1} } ,而不是同一表的 id id 。 / p>

1 个答案:

答案 0 :(得分:0)

在show函数中,您找到具有相同ID的$ class和$ animal, 但事实并非如此,您可以通过id和$ $class = AnimalClass::where('id', $animal-> animal_class_id)->first();

找到$ animal

但是最好的方法是使用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>