Как я могу изменить идентификатор ключа в классе методов orm Laravel? - PullRequest
0 голосов
/ 02 ноября 2018

Возможно, это невозможно, но у меня в таблице есть ответы для радиовхода с идентификатором вопроса и ответом вроде id = 36, answer = Yes. Мой код ниже получить все ответы

public function getAnswer() {
        return $this->hasMany('App\Answer', 'user_id', 'id')
            ->with('question')
            ->whereHas('question.group', function($query) {
                $query->where('name', 'simple_quesion');
            });
    }

и у меня есть коллекция, которая в порядке

#items: array:9 [▼
    0 => getAnswer {#400 ▶}
    1 => getAnswer {#401 ▶}
    2 => getAnswer {#402 ▶}

, но есть какой-либо способ получить ключи и присвоить их этой коллекции, например

#items: array:9 [▼
        35 => getAnswer {#400 ▶}
        37 => getAnswer {#401 ▶}
        42 => getAnswer {#402 ▶}

в этом методе публичная функция getAnswer ()?

[UPDATE]

полная коллекция

Collection {#396 ▼
  #items: array:9 [▼
    0 => getAnswer {#400 ▼
      #fillable: array:3 [▶]
      #connection: "mysql"
      #table: null
      #primaryKey: "id"
      #keyType: "int"
      +incrementing: true
      #with: []
      #withCount: []
      #perPage: 15
      +exists: true
      +wasRecentlyCreated: false
      #attributes: array:7 [▼
        "id" => 18
        "user_id" => 11
        "answer_id" => 34
        "answer" => "YES"
      ]
      #original: array:7 [▶]
      #changes: []

И мне нужен ключ answer_id => 34

#items: array:9 [▼
    34 => getAnswer {#400 ▼

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Хорошо, я так глуп. Это так просто. В лезвии или контроллере я могу использовать:

{{ dd($user->getAnswer->pluck('answer', 'answer_id')) }}
0 голосов
/ 02 ноября 2018

Попробуйте это:

В Answer модели добавьте:

public function question(){
    return $this->belongsTo("App\Question"); //the column name of the question should be "question_id"
}

в Question модели, до:

public function answers(){
    return $this->hasMany("App\Answer"); 
}

И в вашем контроллере, где вы хотите получить вопрос и его ответы, вы просто делаете:

Question::with('answers')->all(); //assuming you want to get all the questions and their answers

Надеюсь, мой ответ поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...