Laravel. Get single column values of a table using Query Builder
Thanks for updating your question with the result. Look at your debug result. it looks like
array:1 [▼
0 => {#322 ▶}
]
That means your query returning a collection of arrays because of you're using get()
method. so get()
method always return a collection of an array.
For avoiding this problem you have to use first()
method instead of get()
.
Remember: all the time you have to use first() method when you want to get a single row.
So your query should be like :
$items = DB::table('items')
->select('id', 'ref_code', 'name', 'price')
->where('ref_code','=', $request->ref_code)
->first();
Or
$item = YourModelName::select('id', 'ref_code', 'name', 'price')
->where('ref_code','=', $request->ref_code)
->first();
And finally get output as like
$item->id, $item->ref_code etc.
Hope it will help.
References: https://laravel.com/docs/5.4/queries#retrieving-results
Laravel: getting a single value from a MySQL query
Edit:
Sorry i forgot about pluck()
as many have commented :
Easiest way is :
return DB::table('users')->where('username', $username)->pluck('groupName');
Which will directly return the only the first result for the requested row as a string.
Using the fluent query builder you will obtain an array anyway.
I mean The Query Builder has no idea how many rows will come back from that query.
Here is what you can do to do it a bit cleaner
$result = DB::table('users')->select('groupName')->where('username', $username)->first();
The first()
tells the queryBuilder to return only one row so no array, so you can do :
return $result->groupName;
Hope it helps
How to get a single value from Query Builder in Laravel?
This is why you have ->value('my_column')
method. So you'll end up with:
NewsCommentLike::query()
->where(['user_id' => $user_id, 'news_comment_id' => $newsComment->id])
->value('is_liked');
The advantage is that the value is retrieved directly from the database. If you call
first()
before it, it can be null thus break your code.
is there a way to retrieve a single row's column in a database table in laravel's database query builder
Try change the sum code like this :
$sum = $debit->amt_debit + $amt->balance;
Because when you select one column it will return like this :
attributes: array:1 [
"amt_debit" => "your amount"
]
So you need to call that one column from your class.
Laravel Query Builder select return columns inside an array
SQL cannot get you the structure you want as far as I know. But you can use map()
to restructure your data from your first query.
$data = $task_query->map(function($task) {
return [
'a' => [$task->column_1, $task->column_2, $task->column_3],
'material' => [$task->material_column_1, $task->material_column_2, $task->material_column_3],
'product' => [$task->product_column_1, $task->product_column_2, $task->product_column_3]
];
});
Then you can use your data in your structure
foreach($data as $item) {
$item['a'];
$item['material'];
$item['product'];
}
Laravel query builder inject column value into Carbon query
I believe you can use whereRaw()
in your clause to use raw DB expressions, If its MySQL you can use DATE_ADD
method with your column value for comparision
$sql->where('domain_expires_on', '>', Carbon::now()->subDays(2)) // 2 days after expiry
->whereRaw('domain_expires_on < DATE_ADD(NOW(), INTERVAL domain_alert_period DAY)');
Related Topics
How to Convert Text to Svg Paths
Download a Facebook Video (.Mp4) Via PHP
How to Have Dynamic Image as CSS Background
Laravel - Form Input - Multiple Select for a One to Many Relationship
How to Get the Values of Input Using PHP
Encoding CSV File With Arabic Content
Fatal Error: Call to Undefined Function Sqlsrv_Connect()
How to Configure Xampp to Send Mail from Localhost
Laravel, Sync() - How to Sync an Array and Also Pass Additional Pivot Fields
How to Center the Text in Phpexcel Merged Cell
Laravel Unique Validation on Multiple Columns
How Remove the Backslash ("\") in the Json Response Using PHP
Object of Class Mysqli_Result Could Not Be Converted to String
Assign Jquery Value to PHP Variable Inside Ajax Sussess
Check If a Specific Value Exists At a Specific Key in Any Subarray of a Multidimensional Array