Laravel 5.2 一个具有多个关系的枢轴(属于多个/多态)


laravel 5.2 one pivot with many relations (belongstomany/polymorphic)?

伙计们。我需要你的帮助。

我有三个关于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)

逻辑问题:

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).

我的想法是给数据透视表两个附加列(带有Pivot('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

我的解决方案:

我为数据透视表创建了一个模型。在数据透视表中,我创建了与MorphOne的关系(注释)。信息:user_id现在位于评论数据库中。

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

型: 工单状态

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');
    }
}

堆栈溢出:如何使用多个数据透视表关系