Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to alias the name of a column in Eloquent

I have an eloquent model named Eloquent:

Products::where("actice", "=", true)->get()->toArray(); 

Now I want to add join-statement to it, I have defined a scopeQuery with:

public function scopeJoinWithTags($query)     {         return $query->leftJoin("tags", "tags.id", "=", "products.tag_id");     } 

Then our main query changes to:

Products::where("actice", "=", true)->joinWithTags->get()->toArray(); 

What I get is OK, it is what I do expect, but I want to change the name property of tags table to tag_name, how should I do that? I mean, i say somewhere in my query to:

 tags.name AS tag_name 

So that in the final result array I do :

$result[$i]['tag_name']; 

While now I have to :

$result[$i]['name']; 
like image 364
Mostafa Talebi Avatar asked Nov 16 '14 14:11

Mostafa Talebi


1 Answers

Simplest way to do this would be to add the fields you need to the get() method and alias the ones you want to rename there.

Products::where("actice", "=", true)     ->joinWithTags     ->get(['tags.name AS tag_name', 'products.*'])     ->toArray(); 
like image 127
turntwo Avatar answered Sep 27 '22 19:09

turntwo