在Laravel 5中将参数从Controller传递给Model

时间:2015-07-16 07:32:20

标签: php eloquent laravel-5

我无法将参数从我的Controller传递到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 错误,我无法弄清楚原因。 如果我对模型中的值进行硬编码,一切正常。

2 个答案:

答案 0 :(得分:4)

使用use()声明: function($join) use($id)

答案 1 :(得分:0)

这是你的答案。你还没有通过内部函数$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');
}}