как получить запись неустранимого типа по идентификатору в отношениях морфа laravel - PullRequest
0 голосов
/ 03 мая 2019

Для системы обмена сообщениями я настроил два отношения морфа с использованием четырех таблиц.

У меня есть вопросы?

  1. Как я могу получить сообщение от конкретного учащегося от полученного сбора ?

Например,если Студент 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');
    }
}
...