[英]Mass update a belongsToMany relationship in a laravel 4 model in a RESTful controller
[英]Laravel getting results from model belongsToMany relationship back to controller
我正在使用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 |
+----+----------------+
我在photos
创建了一个belongsToMany
关系,并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
值[C:\\kittens.jpg,C:\\puppies.jpg]
,但我不知道如何访问它。
另外,我可以使用以下方法在视图中“排序”:
@foreach($sets as $set)
{{$set->images}}
@endforeach
但它看起来只循环一次,并返回必要信息的json(?),尽管我也不知道如何将其解析为常规HTML。
简而言之,我无法同时从控制器和视图访问此数据(photo_location)
使用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
在您的控制器中尝试以下操作:
$result = PhotoSet::where('set_id', $set_id)
->with('sets')
->with('photos')
->get();
$photo_location = $result->photos->photo_location;
这里的PhotoSet是photo_set表的模型,因为它是数据透视表,我们将能够从中访问set和photos表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.