Получить все данные, которые совпадают с внешнего ключа в laravel - PullRequest
0 голосов
/ 21 января 2020

У меня проблемы с получением данных из другой таблицы. Это работает, но я получаю только одну строку для одного из отношений и хочу получить все связанные строки с одним и тем же внешним ключом.

Вот мой код:

controller

$reply_message = FamilyMessage::with('communitymessages')
    ->where('resident_id', $request->resident_id)
    ->where('id', $request->id)
    ->latest('id')
    ->get()->toArray();

, и я получил этот ответ:

array:1 [▼
  0 => array:9 [▼
    "id" => 176
    "community_id" => 25
    "resident_id" => 4515
    "name" => "romil"
    "message" => "test 1"
    "status" => 1
    "created_at" => "2020-01-20 11:27:39"
    "updated_at" => "2020-01-21 05:28:51"
    "communitymessages" => array:10 [▼
      "id" => 21
      "user_id" => 3
      "resident_id" => 4515
      "community_id" => 25
      "family_message_id" => 176
      "name" => " romil "
      "reply_msg" => "reply test 1"
      "status" => 0
      "created_at" => "2020-01-20 11:28:15"
      "updated_at" => "2020-01-20 11:28:15"
    ]
  ]
]

см. communitymessages получить только 1 строку, но я хочу, чтобы все строки хранили один и тот же ключ forign .

Я хочу ответить так:

 array:1 [▼
  0 => array:9 [▼
    "id" => 176
    "community_id" => 25
    "resident_id" => 4515
    "name" => "romil"
    "message" => "test 1"
    "status" => 1
    "created_at" => "2020-01-20 11:27:39"
    "updated_at" => "2020-01-21 05:28:51"
    "communitymessages" => array:10 [▼
      "id" => 21
      "user_id" => 3
      "resident_id" => 4515
      "community_id" => 25
      "family_message_id" => 176
      "name" => " romil "
      "reply_msg" => "reply test 1"
      "status" => 0
      "created_at" => "2020-01-20 11:28:15"
      "updated_at" => "2020-01-20 11:28:15"
    ],
    "communitymessages" => array:10 [▼
      "id" => 22
      "user_id" => 3
      "resident_id" => 4515
      "community_id" => 25
      "family_message_id" => 176
      "name" => " romil "
      "reply_msg" => "reply test 2"
      "status" => 0
      "created_at" => "2020-01-20 11:28:15"
      "updated_at" => "2020-01-20 11:28:15"
    ],
    "communitymessages" => array:10 [▼
      "id" => 23
      "user_id" => 3
      "resident_id" => 4515
      "community_id" => 25
      "family_message_id" => 176
      "name" => " romil "
      "reply_msg" => "reply test 3"
      "status" => 0
      "created_at" => "2020-01-20 11:28:15"
      "updated_at" => "2020-01-20 11:28:15"
    ]

  ]
]

Это отношения:

public function communitymessages() 
{
    return $this->hasOne('App\CommunityMessage', 'family_message_id'); 
}
public function familymessages() 
{
    return $this->belongsTo('App\FamilyMessage','family_message_id'); 
} 

1 Ответ

1 голос
/ 21 января 2020

Причина, по которой вы получаете только одну строку, заключается в том, что вы говорите Eloquent, что в ней должна быть только одна строка (hasOne).

Чтобы извлечь все связанные строки, которые вы хотите обновить в ваших отношениях от hasOne до hasMany:

public function communitymessages()
{ 
    return $this->hasMany('App\CommunityMessage', 'family_message_id'); 
} 
...