我对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).
我的想法是为数据透视表提供两个附加列(withPivot(' user_id',' comment_id'))
*)第一个问题: 我怎么能意识到这种构造?
第二种情况 第二个问题与第一个问题相同,但在这些情况下我如何才能访问"评论"不是与hasone / belongssto而是与多态关系??
我的数据库:
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 :(得分:0)
我的解决方案:
我为pivottable创建了一个模型。 在pivottablemodel中我创建了与morphOne(注释)的关系。 info: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
<强> MODEL:强> 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');
}
}