插入一对一关系在 Laravel5 中不起作用
Inserting one to one relationship is not working in Laravel5
我有两个 table:客户端和 payment_term。我想在保持与付款期限的关系的同时拯救客户table。
我的模特类是:
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');
}
}
我需要使用下面给出的 payment.my 代码插入客户端,但无法正常工作,
$client = new Client();
$client->name = Input::get('name');
$client->save();
//Payment term
$term = PaymentTerm::findOrFail(Input::get('term_id'));
$client->payment_term()->save($term);
}
你能帮我解决这个问题吗?我浏览了文档和其他一些问题,但其中 none 对我有用。我还想知道插入相关模型的最佳实践。
我不确定,但我认为你的 $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
您的关系设置不正确。 hasOne
关系的补充是 belongsTo
关系。此外,它是包含 belongsTo
侧外键字段的模型。
从代码来看,在我看来您已经设置好客户端 table 有一个 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');
}
}
您可以在文档 here 中找到有关 Laravel 关系的更多信息。
我有两个 table:客户端和 payment_term。我想在保持与付款期限的关系的同时拯救客户table。
我的模特类是:
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');
}
}
我需要使用下面给出的 payment.my 代码插入客户端,但无法正常工作,
$client = new Client();
$client->name = Input::get('name');
$client->save();
//Payment term
$term = PaymentTerm::findOrFail(Input::get('term_id'));
$client->payment_term()->save($term);
}
你能帮我解决这个问题吗?我浏览了文档和其他一些问题,但其中 none 对我有用。我还想知道插入相关模型的最佳实践。
我不确定,但我认为你的 $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
您的关系设置不正确。 hasOne
关系的补充是 belongsTo
关系。此外,它是包含 belongsTo
侧外键字段的模型。
从代码来看,在我看来您已经设置好客户端 table 有一个 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');
}
}
您可以在文档 here 中找到有关 Laravel 关系的更多信息。