我占了这张table
床
id
姓名
尺寸
房间
地位
酒店
创建于
更新_at
我需要过滤属于某个房间的所有床。为了做到这一点,我对这些行进行了编码。
public function index()
{
//
$user = JWTAuth::parseToken()->authenticate();
$data = Input::get('room');
if( $data ){
$beds = Bed::where('room', '=', $data )->get();
}else{
$beds = Bed::where('hotel', '=', $user->hostel )->get();
}
foreach( $beds as $bed) {
return $bed->get( array('size','room', 'id') );
}
}
所以,如果我给它房间ID,它应该只返回那个房间的。问题是它返回了所有的表项。
有什么想法吗
更新
固定的关系,并尝试了这个:
return Room::with('beds')->findOrFail($data)->beds;
现在它给了我项目的数量。我如何才能获得物品?
更新
这是模型的代码:
class Room extends \Eloquent {
protected $fillable = array('beds', 'price', 'name', 'description','hotel');
public function beds(){
return $this->hasMany('Bed', 'id', 'room');
}
}
更新
var_dump用于:
var_dump( Room::with('beds')->findOrFail($data)->beds );
是:
int(1)
更新
最后的代码如下。
控制器
public function index()
{
//
$user = JWTAuth::parseToken()->authenticate();
$data = Input::get('room');
if( $data ){
$d = intval( $data );
return Bed::where('room', '=', $d )->get( array('size', 'room', 'id', 'name') );
}else{
return Bed::where('hotel', '=', $user->hostel )->get( array('size', 'room', 'id', 'name') );
}
}
模型
class Room extends \Eloquent {
protected $fillable = array('beds', 'price', 'name', 'description','hotel');
public function camas(){
return $this->hasMany('Bed', 'room', 'id');
}
}
谢谢你们!
3条答案
按热度按时间6ioyuze21#
您在尝试中遇到了一些问题:
所以它返回所有的房间(你到底为什么要在foreach中这样做呢?)
这是冲突-你永远不会得到一个关系时,调用
$room->beds
,因为你有一个列beds
在您的表。也就是说,这就是你需要的:
gopyfrb32#
试试看它是否有效。如果没有,你能提供
Input::get('room')
的var_dump
和床表的结构吗?更好的是,如果你想得到特定的床在一个房间,你有你的关系设置正确:
编辑
我看到你的更新了。你确定它给你一个项目的数量,也许有一个项目和编号是它的id。你能证实吗?如果不是这样,请提供一个vardump。你也可以在模型中发布你的关系代码吗?
nimxete23#
从您的模型中删除以下内容,有时这就是问题所在