【发布时间】:2015-08-24 08:02:25
【问题描述】:
我正在尝试将 Eloquent 用于关系,但结果总是相同:
Call to undefined method Illuminate\Database\Query\Builder::xxxx()
如果我使用其他代码,xxxx 可以是我的模型中定义的“儿子”或 save()。
首先我有这两个模型(简化):
<?php
use Cartalyst\Sentry\Users\Eloquent\User as SentryUserModel;
class User extends SentryUserModel {
public static $rules = array( 'first_name' => 'required',
'last_name' => 'required',
);
protected $hidden = array('password', 'remember_token');
public function sons()
{
return $this->hasMany('Son');
}
}
和
class Son extends \Eloquent {
protected $guarded =['id'];
public $timestamps = false;
public static $rules = array( 'first_name_son' => 'required',
);
public function user()
{
return $this->belongsTo('User');
}
}
PhpStrorm 告诉我 Eloquent 是一个未定义的类。即便如此,我也可以使用一些方法。
我现在的问题。我尝试使用它来保存“用户”的“儿子”:
$user = Sentry::getUser();
$data = Input::all();
$rules_son = Son::$rules;
$son = new Son(array(
'first_name_son' => $data['first_name_son'],
));
$user->sons()->save($son);
这里用
打断Call to undefined method Illuminate\Database\Query\Builder::sons()
如果我使用
$user->with('sons')->save($son);
Call to undefined method Illuminate\Database\Query\Builder::save()
这很好用
Son::create(array(
'user_id' => $user->id,
'first_name_son' => $data['first_name_son'],
));
所有这些代码都在我的 UsersController 中
使用 mnethod“sons()”有什么问题,为什么在这个项目中 Eloquent 可以“未定义”? (它的定义是因为我可以使用 Eloquent ORM 搜索或保存)
谢谢大家
【问题讨论】:
标签: laravel-4 eloquent cartalyst-sentry