Tro*_*yer 1 php function laravel laravel-5
在模型中我得到了一个带有3个参数的作用域函数$query,$sort_by并且$sort_dir,我可以在join函数之前访问它们,但由于某种原因我无法在join函数内部访问它们.
为什么?我错过了什么吗?
public function scopeOrder($query, $sort_by=false, $sort_dir='ASC'){
if(!$sort_by)
return $query;
var_dump($sort_dir); //prints 'ASC'
return $query->join('product_translations', function($q){
var_dump($sort_dir); //variable undefined <----- ERROR
$q->on('product_products.id', '=', 'product_translations.product_id')->where('product_translations.locale', '=', 'de');
})->select('product_products.*')->orderBy('product_translations.name');
}
Run Code Online (Sandbox Code Playgroud)
您需要使用use关键字:
return $query->join('product_translations', function($q) use ($sort_dir)
Run Code Online (Sandbox Code Playgroud)
说明:
这是一个匿名函数.因此,变量在该函数内失去其范围.您需要use在PHP中使用该函数的变量
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |