Reputation: 153
When I am going to save data to database using save($data) . Then there show a error ErrorException Array to string conversion.
Here is controller :
public function create(Request $request){
$company = new Company();
$data = [
'name' => $request['name'] ,
'address' => $request['address'] ,
'city' => $request['city'] ,
'state' => $request['state'] ,
'zip' => $request['zip'] ,
'country' => $request['country'] ,
'email' => $request['email'] ,
'logo' => $request['logo']
];
$file = $request->file('logo');
if($request->hasFile('logo')){
$destinationPath = 'upload';
$file->move($destinationPath,$file->getClientOriginalName());
}
//dd($data);
$company->save($data);
return true ;
}
Upvotes: 1
Views: 1787
Reputation:
Since you instantiating the model. you could do like this instead of passing an array.
$company = new Company();
$company->name = $request['name'];
$company->address = $request['address'];
$company->city = $request['city'];
$company->state = $request['state'];
$company->zip = $request['zip'];
$company->country = $request['country'];
$company->email = $request['email'];
$company->save();
if $request['name'] like variables doesn't work with associative array then i would personally change it to more like object e.g $request->name and so on with every other variables.
Upvotes: 0
Reputation: 159
try this ..
public function create(Request $request){
$data = [
'name' => $request['name'] ,
'address' => $request['address'] ,
'city' => $request['city'] ,
'state' => $request['state'] ,
'zip' => $request['zip'] ,
'country' => $request['country'] ,
'email' => $request['email'] ,
'logo' => $request['logo']
];
$file = $request->file('logo');
if($request->hasFile('logo')){
$destinationPath = 'upload';
$file->move($destinationPath,$file->getClientOriginalName());
}
//dd($data);
DB::table('companies')->insert($data); //dont forget to import DB namespace.
return true ;
}
the table name is companies so I used that. Model( company )
Upvotes: 1
Reputation: 203
Add the attribute protected $fillable = [ 'column_a', 'column_b', .. ];
to your model. Then you can use the mass assignment like this.
Too much extra code. You should use modern variants.
public function create(Request $request){
$file = $request->file('logo');
if($request->hasFile('logo')){
$file->move('upload', $file->getClientOriginalName());
}
Company::create([
'name' => $request->name,
'address' => $request->address,
'city' => $request->city,
'state' => $request->state,
'zip' => $request->zip,
'country' => $request->country,
'email' => $request->email,
'logo' => $request->logo
]);
//You can also use this if "$fillable" array in model is filled:
//Company::create($request->all());
return true;
}
Upvotes: 1