你如何在 laravel 中显示数据透视表数据?

Posted

技术标签:

【中文标题】你如何在 laravel 中显示数据透视表数据?【英文标题】:How do you display pivot table data in laravel? 【发布时间】:2020-10-25 15:36:23 【问题描述】:

我在一个城市有多个站点,我想使用station_city_id 在第二张表中显示city_name

<tbody>

    @foreach ($station as $stations )

        <tr>

            <th scope="row"> $stations->station_name </th>

这是我想要来自不同数据库的城市名称,我不想硬编码它

                 $city_name 

            </td>

            <td> $stations->station_phone_1 </td>
            <td> $stations->station_phone_2 </td>

        </tr>

    @endforeach

</tbody

【问题讨论】:

您的意思是不同的table 还是database? & city_namestation 相关吗? 我有 2 个表站和城市,我在站中放置了与城市中的 city_id 相同的 station_city_id。 【参考方案1】:

查看Eloquent: Relationships

具有各自id的数据库方案表:

城市 车站 city_station

定义每个模型中的关系

Cities.php 模型

public function stations()

  return $this->belongsToMany('App\Stations');

Stations.php 模型

public function city()

  return $this->belongsTo('App\Cities');

控制器

//$id = City id
public function view_cities_stations($id) 
  $city = Cities::find($id);

  return view('view', compact('city'));

刀片视图

@foreach($city->stations as $station)
  $station->name
@endforeach

【讨论】:

感谢您的回答,我仍然不明白这在控制器部分是如何工作的。如何在函数中获取城市 ID?我的模型叫做 City.php ,表名是城市,我需要的列名是 city_name。 在您的路线 web.php 中,您是否有使用 CitiesController 的 /cities/id 路线?在控制台中输入 php artisan route:list 并将该输出添加到您的问题中。 我没有那条路线,我想显示所有车站以及车站所在的城市。控制器中的路由名称/位置,我想用它来显示其中的所有内容,这可能吗? 创建路由:route::get('/locations/id', 'LocationController@show'); 谢谢你,你帮助我开始使用关系,我找到了一个没有新路线的不同解决方案。我可以通过使用 $stations->city->city_name 来显示城市名称

以上是关于你如何在 laravel 中显示数据透视表数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在同一资源LARAVEL中返回数据透视表的数据

如何使用 laravel 删除数据透视表中的单行

Laravel 如何创建数据透视表?

如何通过laravel创建数据透视表

如何在 laravel 5 中使用 Eloquent 更新数据透视表

在laravel中将数据插入数据透视表