Php 在Laravel 5中将参数从控制器传递到模型

Php 在Laravel 5中将参数从控制器传递到模型,php,eloquent,laravel-5,Php,Eloquent,Laravel 5,我无法将参数从控制器传递到Laravel 5中的模型。 我的型号: class Widget extends Model { protected $fillable = array('type'); public function widget_fields_with_data($id) { return DB::table('widget_fields') ->join('banner_data', function($join) { $

我无法将参数从控制器传递到Laravel 5中的模型。
我的型号:

class Widget extends Model {
protected $fillable = array('type');

public function widget_fields_with_data($id)
{
    return DB::table('widget_fields')
        ->join('banner_data', function($join) {
            $join->on('banner_data.widget_field_id', '=', 'widget_fields.id')
            ->where('banner_data.banner_id', '=', $id);
        })
        ->select('widget_fields.*', 'banner_data.value');
}}
在我的控制器中

$widget->widget_fields_with_data('54')->get();
这似乎返回了一个未定义的变量:id错误,我不知道为什么。

如果我硬编码模型中的值,一切正常。

这是您的答案。您尚未在内部函数中传递
$id

public function widget_fields_with_data($id)
{
    return DB::table('widget_fields')
        ->join('banner_data', function($join) use($id) { // pass $id here
            $join->on('banner_data.widget_field_id', '=', 'widget_fields.id')
            ->where('banner_data.banner_id', '=', $id);
        })
        ->select('widget_fields.*', 'banner_data.value');
}}
使用
Use()
语句:
函数($join)使用($id)

编辑行上的App\Models\Widget::App\Models\{closure}()缺少参数2对不起,我犯了一个错误