注意:在我看来之前,我还有另一个视图来显示表中动物和类的所有动物和类。在该视图中,我有一个按钮,当我单击特定记录时,该按钮显示了更多特定详细信息。
这是重定向到我的视图的按钮。我们将此视图称为“动物详细信息”视图。
“动物细节”视图。
我认为有一个条件是假设要在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>
答案 0 :(得分:0)
在show函数中,您找到具有相同ID的$ class和$ animal,
但事实并非如此,您可以通过id和$ $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>