Я следующие модели:Eloquent: с() полей возвращают нуль
class User extends Model
{
public function messageUsers()
{
return $this->hasMany("MessageUser", "user1_id")->orWhere("user2_id", $this->id);
}
}
class MessageUser extends Model
{
public function messages()
{
return $this->hasMany("Message");
}
}
class Message extends Model
{
public function sender()
{
return $this->belongsTo("User", "user_id", "id");
}
}
Я хотел бы получить определенные поля от отправителя() в классе Message. Тем не менее,
$user = User::find(2);
$msg_user = $user->messageUsers()->find(15);
$tmp = $msg_user->messages()->with(["sender" => function($query) { $query->select("username"); }])
$ TMP возвращает нуль, в то время как:
$msg_user->messages()->with("sender")
возвращает все поля, как и ожидалось.
Почему функция() не возвращает значение имени (ов) прошедшего поля?
Спасибо.
UPDATE Здесь структура таблицы:
user:
- id
- username
message_users
- id
- user1_id
- user2_id
messages
- id
- message_user_id
- user_id
- content
Здравствуйте, пожалуйста, вы можете опубликовать DB схему? Или, по крайней мере, таблицы, которые вы пытаетесь связать? –