我有2张桌子: 游客, 旅游。 (以及相应的模特游,旅游)。
我已经成功地建立了他们之间的多对多关系。当我
$tour->tourists()->attach($tourist);
它在表Tour_Tourists中创建一条新记录。 (tour_id,tourist_id,created_at,updated_at)。它显示了哪些游客参加了特定的旅行。
现在我需要创建另一个实体:买方。买家是支付旅游费用的游客之一。只有一位游客可以成为买家。
我在两个模型中建立了一对一的关系:
<?php
命名空间App;
课程拓展模型 { 公共功能游客(){
return $this->belongsToMany('App\Tourist')
->withTimestamps();
}
public function buyer() {
return $this->hasOne('App\Tourist')
->withTimestamps();
}
}
(在旅游模型中也一样,除了我将'App \ Tourist'改为'App \ Tour':
public function buyer() {
return $this->hasOne('App\Tour')
->withTimestamps();
)
但是当我这样做时:
$tour->buyer()->($tourist)
(其中$ tour和$ tourist包含来自数据库的相应记录),我得到:
BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::withTimestamps()'
我觉得我做错了。任何人都可以指出我应该继续前进的方向吗?
谢谢。答案 0 :(得分:1)
withTimestamps()是一个用于belongsToMany的方法,因为它更新了数据透视表的created_at / updated_at字段。 hasOne不会有这种方法。