2015-02-06 182 views
-1

我想知道如何将数组从laravel控制器传递到laravel模型。因此,我可以使用模型将它们保存到db中。我不想让我的控制器沉重,因为我要求这样做。当我一直保存表单提交到数据库,我应该把我的保存功能?在控制器或模型?将数组从控制器传递到laravel模型

回答

2

Laravel有一种叫做Mass Assignment。让我们传递一个关联数组并用这些值填充模型。为了使它工作,你必须确定你希望能够在你的模型质量分配属性:

protected $fillable = ['foo', 'bar', 'and', 'much', 'more']; 

现在,你可以只传递一个数组到模型的构造:

$input = [ 
    'foo' => 'value1', 
    'bar' => 'value2', 
    'and' => 'value3', 
    'much' => 'value4', 
    'more' => 'value5', 
]; 

$model = new Model($input); 
$model->save(); 

或者更短,使用create()方法,填补了模型,并直接将其保存算账:

Model::create($input); 
+0

是的,我知道这gurded $,$可填写的东西。但是我想把save()方法放到模型 – Mahmoodur 2015-02-06 09:35:46

+0

那么'save()'方法在模型中......如果你的意思是你想要在模型中检索用户输入,那么这是不好的做法。该模型只是数据层,不应该担心从数据获取的位置。 'Model :: create(Input :: all())'不好吗? – lukasgeiter 2015-02-06 09:45:16

+0

好的。得到它了。谢谢lukasgeiter – Mahmoodur 2015-02-07 06:33:58

0

试试这个..

//In Model get data from controller 
public function functionname($data1, $data2){ 
    //query 
} 


//In Controller sent data to Model 
$data = Modelname::functionname($data1, $data2)->get(); 
相关问题