将参数传递给Model构造函数

时间:2015-01-19 08:05:05

标签: php laravel eloquent

如何将我的参数传递给模型构造函数,我的控制器中有以下代码

public  static function inbox(){

    $user=Sentry::getUser();
    $results=new Message($user->id);
    $inbox=$results->inbox();
    return $inbox;
}

在我的模态中,我正在扩展父模态构造函数,如下所示

class Message extends \Eloquent {

private $user_id;

public function __construct($attributes = array())  {
    parent::__construct($attributes); // Eloquent
}}

现在我想将$ user_id传递给Message模态构造函数,我该如何实现呢?

使用Eloquent将数据插入数据库时​​,没有任何内容被插入数据库这里是代码

Message::create(
            array(
                'msg_id'=>$result->id,
                'subj'=>Input::get('subj'),
                'content'=>Input::get('content'),
                'sender_id'=>Input::get('sender_id'),
                'receivers_id'=>$user->id,
                'file'=>Input::get('file')

            )
        );

就像我已经覆盖Model类的内置构造函数

2 个答案:

答案 0 :(得分:2)

您可以使用@ PeterPopelyshko的方法并覆盖构造函数或只使用Eloquent提供的内容。 Mass Assignment

您可以使用关联数组通过构造函数传递属性:

$results = new Message(array(
    'user_id' => $user->id
));

只需确保在模型的$fillable数组中定义所有属性,即 fillable

class Message extends \Eloquent {
    protected $fillable = array('user_id');
}

注意如果这是一个数据库字段,则您不需要private $user_id。 Laravel在它自己的$attributes数组中处理它们。

答案 1 :(得分:1)

class Message extends \Eloquent {

private $user_id;

public function __construct($user_id, $attributes = array())  {
    $this->user_id = $user_id;
    parent::__construct($attributes); // Eloquent

}}

然后你可以在你的控制器中使用它

   $results=new Message($user->id);

您可以在模型中访问$ user_id,例如$this->user_id