将参数传递给模型构造函数


passing arguments to Model constructor

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

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::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')
            )
        );

就像我覆盖了模型类的内置构造函数

一样
您可以使用

@PeterPopelyshko的方法并覆盖构造函数,或者只使用Eloquent提供的内容。批量分配。

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

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

只需确保定义所有属性,您希望可在模型的$fillable数组中填充

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

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

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