Tom Fisher Tom Fisher - 6 months ago 28
MySQL Question

Insert or update in laravel?

What would be the best way to set this query? i can't seem to find any documentation on an actual insert or update that works, I'm hoping to do it via the Eloquent model but can't seem to get it working

any help would be appreciated.

DB::table('questions')->insert([
'marital_status' => $request->marital_status,
'job_title' => $request->job_Title,
'industry' => $request->industry,
'occupation' => $request->occupation,
'paye' => $request->paye,
'self_employed' => $request->self_employed,
'child_benefit' => $request->child_benefit,
'work_home' => $request->work_home,
'own_transport' => $request->own_transport,
'company_vehicle' => $request->company_vehicle,
'annual_income' => $request->annual_income,
'pay_memberships' => $request->pay_memberships,
'income_benefits' => $request->income_benefits,
'printer' => $request->printer,
'contact' => $request->contact,
'share' => $request->share,
'terms' => $request->terms,
'user_id' => $user
]);


here is my Model for Questions

<?php
namespace App;

class Questions extends Model
{
protected $fillable = [
'marital_status',
'job_title',
'industry',
'occupation',
'paye',
'self_employed',
'child_benefit',
'work_home',
'own_transport',
'company_vehicle',
'annual_income',
'pay_memberships',
'income_benefits',
'printer',
'contact',
'share',
'terms',
'user_id'
];

public function users(){
return $this->hasOne('App\User');

}
}

Answer

Use Eloquent with mass assignment:

Question::updateOrCreate($request->all()->put('user_id', $user));

Or:

$question = Question::firstOrNew('some_id', $someId);
$question->fill($request->all()->put('user_id', $user))->save();

Don't forget to fill $fillable array with all properties you want to persist:

class Question extends Model
{
      protected $fillable = [
            'marital_status', 
            'job_title',
            'industry',
            'occupation',
            'paye',
            'self_employed',
            'child_benefit',
            'work_home',
            'own_transport',
            'company_vehicle',
            'annual_income',
            'pay_memberships',
            'income_benefits',
            'printer',
            'contact',
            'share',
            'terms',
            'user_id'
      ]

Update

If put() method doesn't work for some reason, try this:

$request->merge(['user_id' => $user]);

And then just use $request->all()

Or:

$requestData = $request->all();
$requestData['user_id'] = $user;

And then use $requestData