簡體   English   中英

在Laravel5中無法插入一對一關系

[英]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');
    }
}

您可以在這里的文檔中找到有關Laravel關系的更多信息

我不確定,但是我認為您的$ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM