你能帮我解决这个问题吗?
答案模型
class Answer extends Eloquent {
protected $primaryKey = 'ID';
protected $table = 'answers';
protected $fillable = array('customerID', 'agentID', 'status', 'date', 'urn_code', 'urn_id');
public function customer(){
return $this->hasOne('Customer');
}
}
CUSTOMER MODEL
class Customer extends Eloquent {
protected $connection = 'mysql';
protected $table = 'leads';
protected $primaryKey = 'cID';
protected $fillable = array('cID','title', 'first_name','last_name','address1', 'address2', 'post_code','city','phone_number');
public function answers() {
return $this->hasMany('Answer');
}
}
ROUTE
Route::get('sales', function(){
$sales = Customer::with('answers')->get()->paginate(15);
foreach($sales as $sale)
echo $sale->last_name . '<br />';
});
这是我的错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'answers.customer_id'
答案 0 :(得分:1)
确切地说错误是怎么回事。在answers
表中,Laravel会自动查找customer_id
列,在这种情况下它不存在。
如果您的客户ID列名称不同,则可以将其指定为hasMany()
方法中的第二个参数:
public function answers() {
return $this->hasMany('Answer', 'my_column');
}
此外,你应该在这里使用belongsTo
关系,正如@razor所指出的那样。
答案 1 :(得分:0)
由于您使用的是自定义主键,因此需要指定本地密钥和外键。
public function answers() {
return $this->hasMany('Answer', 'foreign_key', 'local_key');
}
也许您还必须更新您的答案模型(请查看您是否确实需要hasOne或belongsTo关系):
public function customer(){
return $this->belongsTo('Customer', 'foreign_key', 'local_key');
}
您可以找到更多信息here。