[英]Inserting one to one relationship is not working in Laravel5
我有兩個表:client和payment_term。 我想保存客戶表,同時保持與付款期限的關系。
我的模型類是:
class Client extends Model {
public function payment_term() {
return $this->hasOne('App\Model\PaymentTerm');
}
}
class PaymentTerm extends Model {
public function client() {
return $this->hasOne('App\Model\client');
}
}
我需要在付款時插入客戶。我的代碼如下,但無法正常工作,
$client = new Client();
$client->name = Input::get('name');
$client->save();
//Payment term
$term = PaymentTerm::findOrFail(Input::get('term_id'));
$client->payment_term()->save($term);
}
您能幫我解決問題嗎? 我經歷了文檔和其他一些問題,但沒有一個對我有用。 我也想知道插入相關模型的最佳實踐。
您的人際關系設置不正確。 hasOne
關系的補碼是belongsTo
關系。 此外,它是模型,其中包含belongsTo
端上的外鍵字段。
從代碼中,我覺得您已經設置好了,以便客戶表具有term_id字段(payment_term記錄的外鍵)。 在這種情況下,您的關系應為:
class Client extends Model {
public function payment_term() {
return $this->belongsTo('App\Model\PaymentTerm', 'term_id');
}
}
class PaymentTerm extends Model {
public function client() {
return $this->hasOne('App\Model\Client', 'term_id');
}
}
我不確定,但是我認為您的$ client-> save()引起了問題。
嘗試改用此代碼-
$client = new Client();
$client->name = Input::get('name');
//Payment term
$term = PaymentTerm::findOrFail(Input::get('term_id'));
$term->client()->save($client);
另外,您可能需要將App\\Model\\client
更改為App\\Model\\Client
關於最佳做法,我認為文檔中的代碼示例可以為您提供幫助-http://laravel.com/docs/5.0/eloquent#inserting-related-models
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.