我的项目中有MyRoom.php
和TotalCity.php
,其中每个房间都分类在城市中
这样我就在MyRoom.php中做到了
public function location()
{
return $this->belongsTo(TotalCity::class, 'location_id')->withTrashed();
}
而我在TotalCity.php中做到了
public function location()
{
return $this->hasMany(MyRoom::class , 'total_city_id')->withTrashed();
}
我已经像这样通过路由和控制器传递了id home.blade.php id)}}“> {{$ row-> name}}
web.php
Route::get('/city/{id}/rooms/','SiteController@room')->name('room');
SiteController.php
public function room($id) {
$room = TotalCity::find($id)->location;
return view('frontend.pages.rooms', compact('room'));
}
rooms.blade.php
@foreach($room as $row)
<div class="room">
<a href="{{ route('description',$row->id) }}"><img src="{{ asset(env('UPLOAD_PATH').'/' . $row['photoi1']) }}"/></a>
</div>
@endforeach
但是,当我将城市和房间存储在数据库中特定城市之下时,这不会显示任何城市中的任何房间。
答案 0 :(得分:0)
在关联方法中,您还应该提及外键和所有者键, 例如在MyRoom.php中:
public function location()
{
return $this->belongsTo(TotalCity::class, 'location_id', 'total_city_primary_key')->withTrashed();
}
您可以阅读laravel documentioation以获得更多详细信息。
答案 1 :(得分:0)
TotalCity模型中的foreignKey错误:
public function location(){
return $this->hasMany(MyRoom::class, 'location_id')->withTrashed();
}
答案 2 :(得分:0)
我强烈建议您将模型的名称更改为城市和房间。如果不想,请确保在两个模型中都将它们连接到正确的表,可以在两个模型中使用$table
变量来实现这一点,例如:
$table = 'your_table_name';
这将确保桌子连接正确。
此外,您应该进行一些更改:
在您的 TotalCity 模型中,执行以下操作:
public function rooms()
{
return $this->hasMany(MyRoom::class , 'total_city_id')->withTrashed();
}
在您的 MyRoom 模型中,执行以下操作:
public function city()
{
return $this->belongsTo(TotalCity::class)->withTrashed();
}
在您的 SiteController 中执行以下操作:
public function room($id) {
$rooms = TotalCity::find($id)->rooms;
return view('frontend.pages.rooms', compact('rooms'));
}
在您的视图
中@foreach($rooms as $room)
<h2>{{$room->name}}</h2>
<div class="room">
<a href="{{ route('description',$room->id) }}"><img src="{{ asset(env('UPLOAD_PATH').'/' . $room['photoi1']) }}"/></a>
</div>
@endforeach