In this article, we will explore different ways to concatenate two columns in Laravel applications, specifically in versions 6, 7, 8, 9, and 10.
Concatenating columns is useful when you want to display the combined result of two or more columns in a single query.
We will cover two methods to achieve this: using Laravel Query Builder with DB raw and using Laravel Eloquent Model Scope. Both methods have their advantages and limitations, so choose the one that suits your needs best.
Before we dive into the examples, let’s ensure that you have the necessary prerequisites in place. You should have a working Laravel application with a User model and a database connection.
Make sure you have the required columns in the database schema for this example, such as ‘first_name’ and ‘last_name’. Now, let’s get started with the two methods.
Method 1: Concatenating columns using Laravel Query Builder and DB Raw
The first method involves using the Laravel Query Builder and DB raw to concatenate two columns in a SELECT statement. This method provides a more flexible approach and can be used with the pluck
method as well. Here’s the complete example:
public function showUsers()
{
$userList = User::select("*", DB::raw("CONCAT(users.first_name, ' ', users.last_name) as full_name"))
->get();
return view('userlist', compact('userList'));
}
In your view file, use the following code to display the full names of users:
@foreach ($userList as $userInfo)
{{ $userInfo->full_name }}
@endforeach
Method 2: Concatenating columns using Laravel Eloquent Model Scope
The second method uses Laravel Model Eloquent Scope to concatenate two columns. This method is more limited compared to the first method but can be useful in less complex scenarios. To use this method, create a scope in your User model like this:
class UserModel extends Authenticatable
{
// ...
public function getCompleteNameAttribute()
{
return "{$this->first_name} {$this->last_name}";
}
}
To display the full names of users, use the following code in your view file:
@foreach ($userList as $userInfo)
{{ $userInfo->complete_name }}
@endforeach
You can also use the pluck
method with this approach:
$userList = User::select("id", DB::raw("CONCAT(users.first_name, ' ', users.last_name) as complete_name"))
->pluck('complete_name', 'id');
dd($userList);
Conclusion
In this article, we explored two ways to concatenate columns in Laravel applications. Both methods have their advantages, and the choice depends on your specific requirements. Make sure to choose the method that best suits your needs, and feel free to modify the examples to match your application’s structure.
Leave a Reply