Laravel

Some Laravel tips that we must need to know

Some Laravel tips that we must need to know

1) Null safe operator

From PHP 8 you can use Null Safe Operator

How we are doing null checking code in PHP < 8.0

				
					 $country =  null;

 if ($session !== null) {
     $user = $session->user;

     if ($user !== null) {
         $address = $user->getAddress();

         if ($address !== null) {
             $country = $address->country;
         }
     }
 }
				
			

PHP 8 allows you to write this:

				
					 $country = $session?->user?->getAddress()?->country;
				
			

2) Ternary condition

We have used this ternary condition for checking null value

				
					 isset($user->image) ? $user->image : null
				
			

We can short above condition like this

				
					 $user->image ?? null
				
			

3) Clone a model

You can clone a model using replicate(). It will create a copy of the model into a new, non-existing instance.

				
					 $user = App\User::find(1);
 $newUser = $user->replicate();
 $newUser->save();
				
			

4) Default Relationship Models

Laravel provides a handy withDefault() method on the belongsTo relationship that will return a model object even when the relationship doesn’t actually exist.

				
					 class Post extends Model
 {
     public function user()
     {
         return $this->belongsTo(User::class)->withDefault();
     }
 }
				
			

Now, if we try to access the $post->user relationship, we’ll still get a User object even when it does exist in the database. This is known as the “null object” pattern and helps eliminate some of those if ($post->user) conditional statements.

 

For more information read Laravel withDefault() doc.

5) Save models and relationships

You can save a model and its corresponding relationships using the push() method.

				
					class User extends Model
 {
     public function phone()
     {
         return $this->hasOne('App\Phone');
     }
 }
 $user = User::first();
 $user->name = "Peter";
 $user->phone->number = '1234567890';
 $user->push(); // This will update both user and phone record in DB
				
			

Hope it will be helpful.

 

Thanks

Share On: