Для системы обмена сообщениями я настроил два отношения морфа с использованием четырех таблиц.
У меня есть вопросы?
- Как я могу получить сообщение от конкретного учащегося от полученного сбора ?
Например,если Студент X и Y отправляют сообщения Сотрудникам А
, когда я запрашиваю полученные сообщения Сотрудников А вроде:
$staff = \App\Staff::find(1);
$all_message_recieves = $staff->receives;
Я получил оба сообщенияот Студент X и Y , но мне нужны только Студент X сообщения
Структура таблиц
tbl_message
id messageable_id, messageable_type, subject, message
1 1 app\staff msg1 msg1
2 2 app\staff msg1 msg1
3 1 app\student msg2 msg2
4 2 app\student msg2 msg2
tbl_message_receiver
id, message_id , receiveable_id, receiveable_type
1 1 1 app\student
2 2 2 app\student
3 3 1 app\staff
3 4 1 app\staff
Staff
id name
1 A
2 B
Student
id name
1 X
2 Y
Модель Message.php
class Message extends Model
{
public $table = "tbl_message";
public function messageable()
{
return $this->morphTo();
}
}
Модель Messagereceive.php
class Messagereceive extends Model
{
public $table = "tbl_message_receiver";
public function receiveable()
{
return $this->morphTo();
}
public function message()
{
return $this->hasOne('App\Message');
}
}
Модель Staff.php
class Staff extends Model
{
public function messages()
{
return $this->morphMany('App\Message', 'messageable');
}
public function receives()
{
return $this->morphMany('App\Messagereceive', 'receiveable');
}
}
Модель Student.php
class Student extends Model
{
public function messages()
{
return $this->morphMany('App\Message', 'messageable');
}
public function receives()
{
return $this->morphMany('App\Messagereceive', 'receiveable');
}
}