GingerFish
GingerFish

Reputation: 478

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

    }   
}

Upvotes: 2

Views: 913

Answers (1)

Alexey Mezenin
Alexey Mezenin

Reputation: 163748

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

Upvotes: 5

Related Questions