LeviZoesch
LeviZoesch

Reputation: 1621

Laravel store data thru model

I dont know how else to label the title. Anyone have ideas go ahead and make a suggested edit.

I have a series of Models for the database in my application.

I can currently add a global scope to the model and have the model automatically add a "where" clause on my queries to the database on a key:value pair. This is working great.

class Customers extends Model
{
    protected $table = 'customers';

    protected static function boot() {

        parent::boot();

        static::addGlobalScope('companyRecordID', function (Builder $builder) {
            $builder->where('companyRecordID', Auth::guard('user')->user()->companyRecordID);
        });

    }
}

I am having troubles trying to identify if this can be done; Id like to be able to store the "companyRecordID" from the Auth::guard('user')->user()->companyRecordID automatically when a database record is created. Similar to created_at and updated_at are created automatically without requiring code from the controller to define.

Can someone direct me to what I should be looking for. Ive spent a few hours trying to google key word pairs to find an answer with no avail.

Upvotes: 1

Views: 49

Answers (2)

Aushraful
Aushraful

Reputation: 142

I believe you got your answer but,

On your model please use protected $fillable

protected $fillable = ['','',''];
protected $table = 'customers';

also, you can use Relationships to optimize your codes.

Upvotes: 1

lagbox
lagbox

Reputation: 50481

If you are using Models to create the records you can listen for the creating event for the Model and then add any additional fields you may need. You can create a listener for the creating event on Customers:

Customers::creating(function ($customer) {
    if (auth('user')->user()) {
        $customer->companyRecordID = auth('user')->user()->companyRecordID;
    }
});

You can throw that in a Service Provider's boot method or your Model's boot method. If you throw it in the Model's boot method you may want to adjust to using static:: instead of Customers::.

Upvotes: 1

Related Questions