这是关系1代码:
/**
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function address()
{
return $this->hasMany('App\IPAddress', 'group_id');
}
和关系2代码:
/**
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function group()
{
return $this->belongsTo('App\IPGroups');
}
我想获取属于指定组的所有IP地址。我不想写原始查询,我需要完成查询关系。有没有人有想法?
我试着这样做:
/**
* Get IP Addresses of specified group
* @param Request $request
* @return mixed
*/
public function getIP(Request $request)
{
$group = IPGroups::findOrFail($request->group_id);
return $group->address;
}
但是我需要添加一个where语句,我只能选择活动的ip地址。
以下是模型1代码:
namespace App;
use Illuminate\Database\Eloquent\Model;
class IPGroups extends Model
{
/**
* Working Table
* @var string
*/
protected $table = 'ip_groups';
/**
* Guarded Values From Mass Assignment
* @var array
*/
protected $guarded = [ 'id' ];
/**
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function address()
{
return $this->hasMany('App\IPAddress', 'group_id');
}
}
和第二个型号代码:
namespace App;
use Illuminate\Database\Eloquent\Model;
class IPAddress extends Model
{
/**
* Working Table
* @var string
*/
protected $table = 'ips';
/**
* Protected Values From Mass Assignment
* @var array
*/
protected $fillable = [ 'group_id', 'ip', 'description', 'status' ];
/**
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function group()
{
return $this->belongsTo('App\IPGroups');
}
}
答案 0 :(得分:0)
尝试此选项,只获取状态为'有效':
的地址return $group->address->where('status','Active');
这不起作用的原因:
return $group->address->where('status','=','Active');
我们在这里使用的where
是where
类的Collection
,它不接受比较器作为where
的第二个参数Model
的做法。