考虑以下两种关系:
用户:
CREATE TABLE user (
id INT NOT NULL,
social_provider_id INT NOT NULL,
CONSTRAINT `user_social_provider_id_fk` FOREIGN KEY (`social_provider_id`)
REFERENCES `social_provider` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
)
社交提供者:
CREATE TABLE social_provider (
id INT NOT NULL,
name VARCHAR NOT NULL )
雄辩的模特:
class User extends Model{
protected $table = 'user';
public function socialProvider(){
return $this->hasOne('/SocialProvider');
}
}
现在我想创建一个新的User对象并保存它:
$user = new User();
$socialProvider = SocialProvider::find(1);
$user->socialProvider()->save($socialProvider);
$user->save();
但是我在分配SocialProvder对象
的行上得到了这个例外Call to undefined method Illuminate\Database\Query\Builder::save()
我首先尝试保存User对象然后分配关系,但显然这是不可能的,因为NOT NULL
表的定义中存在user
约束。
我目前的解决方法是以这种方式分配关系:
$user->social_provider_id = $socialProvider->id;
但我想使用Eloquent的功能。 如何保存一个不可为空的关系的新模型,而不必自己分配ID?
解决方案:
与@Panagiotis Koursaris建议的一样,解决方案是使用associate()
代替save()
答案 0 :(得分:1)
试试这个:
$config = $serviceManager->get('config');
$hostName = $config['hostname'];
答案 1 :(得分:0)
在ShoppingCart
模型中,执行此操作
User