伙计们。我需要你的帮助。
我有三个关于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');
}
}
堆栈溢出:如何使用多个数据透视表关系