我正在使用Laravel 5和Eloquent,我有3个表设置:
photos
+----+---------------+------------------+
| id | photo_name | photo_location |
+----+---------------+------------------+
| 1 | kittens.jpg | C:\kittens.jpg |
| 2 | puppies.jpg | C:\puppies.jpg |
| 3 | airplanes.jpg | C:\airplanes.jpg |
| 4 | trains.jpg | C:\trains.jpg |
+----+---------------+------------------+
photo_set (pivot table)
+------------+----------+
| set_id | photo_id |
+------------+----------+
| 1 | 1 |
| 1 | 2 |
| 2 | 3 |
| 2 | 4 |
+------------+----------+
sets
+----+----------------+
| id | description |
+----+----------------+
| 1 | cute animals |
| 2 | transportation |
+----+----------------+
我在belongsToMany
和photos
模型中创建了sets
关系,将这两者联系在一起。
class Photo extends Model {
public function sets()
{
return $this->belongsToMany('App\Set');
}
}
和
class Set extends Model {
public function photos()
{
return $this->belongsToMany('App\Photo');
}
}
但是我试图在我的控制器中引用$Sets->photos()
模型函数,因此给定一组id=1
,我可以返回每行的photo_location
值{{1但是我不知道如何访问它..
此外,我可以“在视图中”对“此类信息”进行“排序”:
[C:\kittens.jpg,C:\puppies.jpg]
但看起来它只迭代一次并返回必要信息的json(?),但我不知道如何将其解析为常规HTML。
简而言之,我无法从控制器和视图访问此数据(photo_location)
答案 0 :(得分:1)
使用Collection::lists()
$locations = Set::find(1)->photos->lists('photo_location');
它将返回一个数组['C:\kittens.jpg', 'C:\puppies.jpg']
http://laravel.com/api/4.2/Illuminate/Database/Eloquent/Collection.html#method_lists
答案 1 :(得分:0)
在你的控制器中试试这个:
$result = PhotoSet::where('set_id', $set_id)
->with('sets')
->with('photos')
->get();
$photo_location = $result->photos->photo_location;
这里PhotoSet是photo_set表的模型,因为它是一个数据透视表,我们可以从中访问这两个集和照片表。