我有3张桌子:
我正试图通过带有偏移和限制参数的站表来获取类型slug的数据。但我也希望使用此查询获取流派名称:
Genre::slug($genreSlug)
->first()
->stations()
->skip($offset)
->take($limit)
->get([
'genres.name as genre_name',
'stations.id',
'stations.name',
'stations.slug',
'stations.stream_url',
'stations.logo',
'stations.media_type',
'stations.bit_rate',
'stations.listeners',
'stations.status',
]);
我收到以下错误:
“Illuminate \ Database \ QueryException”,“message”:“SQLSTATE [42S22]:未找到列:1054'字段列表'中的未知列'genres.name'(SQL:select
genres
。{{ 1}}为name
,genre_name
。stations
,id
。stations
,name
。stations
,{{1} }。slug
,stations
。stream_url
,stations
。logo
,stations
。media_type
,stations
。bit_rate
,stations
。listeners
,stations
。status
为genre_station
,genre_id
。pivot_genre_id
为{{ 1}},genre_station
。station_id
为pivot_station_id
,genre_station
。created_at
为pivot_created_at
来自genre_station
内部联接{{1在updated_at
。pivot_updated_at
=stations
。genre_station
其中stations
。id
= 1限制15偏移0)“,”文件“ : “/家/流浪/项目/ MuzzaLife /供应商/ laravel /框架/ SRC /照亮/数据库/ Connection.php”, “行”:625
没有genre_station
字段,一切正常。我怎么解决这个问题?
答案 0 :(得分:1)
在SQL查询中,您已经可以看到出现了什么问题。可能第一个查询将为您提供类型,但之后会为站点进行新查询,它们基于genre_station
表。您没有genres
表中的任何信息,因此您应该添加此信息。
您可以通过向查询添加联接来完成此操作。 http://laravel.com/docs/5.1/queries#joins
或者首先将该类型保存在一个单独的变量中并在...之后获取这些站点。
$genre = Genre::slug($genreSlug)->first();
$stations = $genre->stations()
->skip($offset)
->take($limit)
->get([
'stations.id',
'stations.name',
'stations.slug',
'stations.stream_url',
'stations.logo',
'stations.media_type',
'stations.bit_rate',
'stations.listeners',
'stations.status',
]);