Maziyar Bahramiyan
Maziyar Bahramiyan

Reputation: 37

Laravel - pluck fields from relations

i'm new in laravel and php and now i wanna create a rest api I have this query:

 $questions = Question::with(
 array('picture' => function($query){     
      $query>select('question_id','picture_name')>pluck('picture_name')>all();
     },
       'user'=>function($query){
      $query->select('id','image','name');
     }))->get()->toArray();

my query return this json:

{
"questions:": [
    {
        "id": 1,
        "title": "23",
        "caption": "last",
        "address": "lsdbabfd",
        "picture": [
            {
                "question_id": 1,
                "picture_name": "1527484678.jpg"
            },
            {
                "question_id": 1,
                "picture_name": "1527485120.jpg"
            }
        ],
        "user": {
            "id": 1,
            "image": "defaultPicture",
            "name": "alex"
        }
    }
  ]
}

but i want this json:

{
"questions:": [
    {
        "id": 1,
        "title": "23",
        "caption": "last",
        "address": "lsdbabfd",
        "picture": [
            "1527484678.jpg",
            "1527485120.jpg"
        ],
        "user": {
            "id": 1,
            "image": "defaultPicture",
            "name": "alex"
        }
    }
  ]
}

how can i do that? i already tried to do that with Laravel pluck method and Eloquent Mutators

Upvotes: 1

Views: 4566

Answers (1)

Dry7
Dry7

Reputation: 881

you can add attribute method

class Question extends Model
{
    ...
    protected $appends = ['pictures'];
    public function getPicturesAttribute()
    {
        return $this->pictures->pluck('picture_id');
    }
}

Upvotes: 2

Related Questions