2016-03-21 2 views
3

он ребята. Мне нужна ваша помощь.laravel 5.2 один шарнир со многими отношениями (принадлежность/полиморфный)?

У меня есть три вопроса о логике и передовой практике в laravel/eloquent/relation.

первый сценарий

У меня есть четыре модели/таблицы.

1.) model: Ticket | db: tickets 
2.) model: Status | db: status 
3.) model: Comment | db: comments 
4.) model: User | db: users 
and 
1.) one pivottable between Ticket and Status (status_ticket) 

logicproblem:

1.) one ticket can have many status. (belongstomany/belongstomany) 
2.) each status can have one comment (hasone/belongsto) and one user (hasone/belongsto) but only in combination with ticket (pivot:status_ticket). 

моя идея состоит в том, чтобы дать сводную таблицу два addional COLS (withPivot ('user_id', 'comment_id'))

*) первый вопрос: как я могу реализовать эту конструкцию?

второй сценарий второй вопрос такой же, как и первый, но в этих сценария, как я могу получить доступ к «комментарий» не с hasone/belongsto, а с полиморфного-отношения ??

мой дб:

comments 
    id - integer 
    message - string 

status 
    id - integer 
    name - string 

tickets 
    id - integer 
    name - string 

users 
    id - integer 
    name - string 

третий вопрос , что это лучший способ для именования сводной таблицы?

1.) 
status_ticket 
    id - integer 
    comment_id - integer 
    status_id - integer 
    ticket_id - integer 
    user_id - integer 

2.) 
comment_status_ticket_user 
    id - integer 
    comment_id - integer 
    status_id - integer 
    ticket_id - integer 
    user_id - integer 

ответ

0

мое решение:

я создал модель для сводной таблицы. в pivottablemodel я создал отношение с morphOne (комментарий). info: user_id теперь находится в комментариях db.

DB (стержень между статусом и билет): status_ticket

id - integer 
status_id - integer 
ticket_id - integer 

DB: комментарии

id - integer 
message - string 
user_id - integer 
commentable_id - integer 
commentable_type - string 

МОДЕЛЬ: TicketStatus

namespace App; 
use Illuminate\Database\Eloquent\Model; 

class TicketStatus extends Model { 

protected $table = 'status_ticket'; 
public $timestamps = true; 

    public function comment() {  
     return $this->morphOne('App\Comment', 'commentable'); 
    } 

} 

stackoverflow: How to use multiple pivot table relationships

Смежные вопросы