【问题标题】:Laravel and jenssegers mongodb relationship data not savingLaravel 和 jenssegers mongodb 关系数据未保存
【发布时间】:2019-03-14 13:43:11
【问题描述】:

我在 Laravel 有 2 节课

class Company
{
  public function people()
  {
     return $this->hasMany('Person');
  }
}

class Person 
{
  public function company()
  {
    return $this->belongsTo('Company');
  }
}

现在在另一个类中,我正在创建一个人员对象并使用定义的变量 $companyId 设置 company_id。

$person = new Person;
$person->company_id = $companyId; //Code not executing after it.
$person->save();

当我在 $person 中设置 $companyId 时,它只是在递归调用中,永远不会回来。

我也尝试过这段代码,但没有运气,再次,它卡在某个地方并且永远不会保存。

$company = Company::find($companyId);
$person = new Person;
$company->people()->save($person); // Never execute this

请提供一些看法,我做错了什么,我用谷歌搜索了这个但没有找到解决这个问题的方法。

  • 编辑 *

这个应用程序是在 laravel 4.2 中创建和维护的,它运行良好,但是在将它升级到 laravel 5.7 时,这里出现了问题。

谢谢

【问题讨论】:

  • 您要为 person 对象存储什么属性?
  • 请添加您的表结构,以便我可以调试更多..

标签: laravel-5.7 php-7.2 jenssegers-mongodb eloquent-relationship mongodb4.0


【解决方案1】:

你可以试试下面的代码可能对你有用。

请在您的代码中添加这样的关系。

class Company
{
  public function people()
  {
     return $this->hasMany('App\Person');
  }
}

class Person 
{
  public function company()
  {
    return $this->belongsTo('App\Company');
  }
}

并尝试像这样保存 Person 对象,我不知道 person 表的字段,所以对于演示,我使用了一个名称,所以根据您的要求替换它。

$comment = new App\Person(['name' => 'test']);

$company= App\Company::find(1);

$company->people()->save($person);

【讨论】:

  • 我正在尝试您的建议,但面临其他问题,所以一旦我解决了这个问题,我会通知您。
  • 谢谢乔伊,根据您的建议,我可以毫无问题地保存数据,但我发现我们的架构存在一些问题,因为有许多多级层次结构继承,以及许多重载很好的设置属性。所以通过xDebug,我遇到了这些问题。再次感谢您,至少我从您的回答中得到了帮助。
猜你喜欢
  • 2014-08-04
  • 2016-07-26
  • 2017-05-21
  • 2017-05-18
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多