php laravel wherehas,Php变量没有传递到whereHas函数 – Laravel Eloquent

简介:我无法访问whereHas函数中的$domain变量(如下); Laravel返回以下错误:

“Undefined variable: domain”

我包括我的关系,因为我不确定雄辩的性质以及我如何调用此查询是否会导致问题.

我有一个中间件调用模型(组织)

组织模型有字段

subdomain

组织模型有

public function domains()

{

return $this->hasMany('App\Domain');

}

域模型(tablename域)具有字段

domain, org_id

还有功能

public function org()

{

return $this->belongsTo('App\Org');

}

我可以dd($domain);在此功能之前没有问题.但是,我得到了一个

“Undefined variable: domain”

对于下面whereHas函数内的查询参数.

为什么laravel看不到上面的变量?

namespace App\Http\Middleware;

use Closure;

class DomainLookup

{

protected $org;

/**

* Handle an incoming request.

*

* @param \Illuminate\Http\Request $request

* @param \Closure $next

* @return mixed

*/

public function handle($request, Closure $next)

{

$route = $request->route();

$domain = $route->parameter('domain');

$trimmed_domain = trim($domain, (config('app.domain')));

$this->org = \App\Org::where('subdomain',$trimmed_domain)

->whereHas('domains', function($q) {

$q->where('domain', $domain);

})

->get();

if ($this->org) {

return $next($request);

}

}

}

解决方法:

你需要在函数后调用use:

$this->org = \App\Org::where('subdomain',$trimmed_domain)

->whereHas('domains', function($q) use ($domain) {

$q->where('domain', $domain);

})

->get();

标签:php,laravel-5,eloquent

来源: https://codeday.me/bug/20190727/1550345.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值