Laravel雄辩的两人有很多关系

时间:2015-06-20 21:02:07

标签: php database laravel eloquent

我已经尝试了太多次,但我仍然无法得到它。 我正在尝试使用laravel制作自定义游览应用程序。我有3个型号用户 - 请求 - 提供 用户有很多要求,请求有很多优惠 但是提议和请求都属于用户,这是因为用户表有两个角色,一个是旅行者,一个是旅行社。

这是我的模特 班级用户

protected $fillable = [
    'first_name',
    'last_name',
    'contact_number',
    'photo',
    'birthday',
    'about',
    'email',
    'agency',
    'logo',
    'role',
    'status_agency',
    'is_admin',
    'legal',
    'password',
];
public function custom_tour_requests()
{
    return $this->hasMany('App\custom_tour_request', 'traveler_id');        
}
public function custom_tour_offers()
{
    return $this->hasManyThrough('App\custom_tour_offer', 'App\custom_tour_request');       
}

class custom_tour_request

protected $fillable = [
    'title' ,
    'departure' ,
    'destination' ,
    'description' ,
    'start_date' ,
    'end_date',
    'budget' ,
    'adult' ,
    'child' ,   
    'traveler_id'       
];
public function user()
{
    return $this->belongsTo('App\user');
}
public function custom_tour_offers()
{
    return $this->hasMany('App\custom_tour_offer', 'custom_tour_request_id');       
}

class custom_tour_offer

protected $fillable = [
    'title',
    'departure',
    'destination',
    'itinerary',
    'include',
    'exclude',
    'start_date',
    'end_date',
    'price'
];
public function custom_tour_request()
{
    return $this->belongsTo('App\custom_tour_request');
}
public function user()
{
    return $this->belongsTo('App\user');
}

每当我试图插入它时返回错误,

$travelagent = user::find(Auth::user()->id);        
$customtourRequest =   $travelagent->custom_tour_offers()->create($requests->all());

我无法更改我的数据库设计。我很困惑。

2 个答案:

答案 0 :(得分:0)

错误是什么? 你有没有重新检查文档和API? 也许你忘记了create方法之前的第一个()。

http://laravel.com/docs/5.0/eloquent#querying-relations

http://laravel.com/api/5.0/Illuminate/Database/Eloquent/Relations/HasManyThrough.html

我个人喜欢这样做 custom_tour_offer::create($request->all());

答案 1 :(得分:0)

试试这个并发布结果:

$tourOffers = $travelagent->custom_tour_offers();
$queryBuilder = $tourOffers->getQuery();
$sql = $queryBuilder->getGrammar()->compileInsert($queryBuilder, $requests->all());

dd($sql);