php-Laravel 5.3 MongoDB库’jenssegers / laravel-mongodb’中的hasMany关系问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-Laravel 5.3 MongoDB库’jenssegers / laravel-mongodb’中的hasMany关系问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3043字,纯文字阅读大概需要5分钟。
内容图文
我在Laravel 5.3中使用MongoDB库.我在MongoDB中有两个集合,我想与他们建立hasMany关系.
MongoDB的:
第一组:
雇员
{
"_id" : ObjectId("586ca8c71a72cb07a681566d"),
"employee_name" : "John",
"employee_description" : "test description",
"employee_email" : "john@email.com",
"updated_at" : "2017-01-04 11:45:20",
"created_at" : "2017-01-04 11:45:20"
},
{
"_id" : ObjectId("586ca8d31a72cb07a6815671"),
"employee_name" : "Carlos",
"employee_description" : "test description",
"employee_email" : "carlos@email.com",
"updated_at" : "2017-01-04 11:45:20",
"created_at" : "2017-01-04 11:45:20"
}
第二收藏:
任务
{
"_id" : ObjectId("586ccbcf1a72cb07a6815b04"),
"task_name" : "New Task",
"task_description" : "test description",
"task_status" : 1,
"task_created_at" : "2017-04-01 02:17:00",
"task_updated_at" : "2017-04-01 02:17:00"
},
{
"_id" : ObjectId("586cd3261a72cb07a6815c69"),
"task_name" : "2nd Task",
"task_description" : "test description",
"task_status" : 1,
"task_created_at" : "2017-04-01 02:17:00",
"task_updated_at" : "2017-04-01 02:17:00"
}
我在他们之间创建了数据透视表
Employee_Task
{
"_id" : ObjectId("586cd0cb1a72cb07a6815bf3"),
"employee_task_employee_id" : "586ca8c71a72cb07a681566d",
"employee_task_task_id" : "586ccbcf1a72cb07a6815b04",
"status" : 1
},
{
"_id" : ObjectId("586cd7851a72cb07a6815d7d"),
"employee_task_employee_id" : "586ca8c71a72cb07a681566d",
"employee_task_task_id" : "586cd3261a72cb07a6815c69",
"status" : 1
}
Laravel:
模型:
雇员:
<?php
namespace App\Models;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Employee extends Eloquent {
protected $collection = 'employee';
protected $primaryKey = '_id';
public function tasks()
{
return $this->hasMany('App\Models\Task');
}
}
任务:
<?php
namespace App\Models;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Task extends Eloquent {
protected $collection = 'task';
protected $primaryKey = '_id';
public function employees()
{
return $this->belongsToMany('App\Models\Employee');
}
}
控制器:
public function EmployeeData($data)
{
$employee= Employee::find('586ca8c71a72cb07a681566d')->tasks;
echo "<pre>";
print_r($employee);
}
当我想查看针对员工的任务时,它显示以下输出:
Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
(
)
)
我怎样才能解决这个问题?
解决方法:
在Mongo Eloquent中,当创建多对多关系时,您不需要具有数据透视表,也就是SQL心态,在Mongo-Eloquent中,多对多关系中的外键存储在数组中.
因此,模型应如下所示:
<?php namespace App\Models;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Employee extends Eloquent {
protected $collection = 'employee';
protected $primaryKey = '_id';
public function tasks()
{
return $this->belongsToMany('App\Models\Task');
}
}
<?php namespace App\Models;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Task extends Eloquent {
protected $collection = 'task';
protected $primaryKey = '_id';
public function employees()
{
return $this->belongsToMany('App\Models\Employee');
}
}
另外,您应该在尝试检索关系之前先加载它们
$employee= Employee::with('tasks')->find('586ca8c71a72cb07a681566d')->tasks;
您可以像在hasMany关系中一样保存关系
$employee->tasks()->save(new Task());
内容总结
以上是互联网集市为您收集整理的php-Laravel 5.3 MongoDB库’jenssegers / laravel-mongodb’中的hasMany关系问题全部内容,希望文章能够帮你解决php-Laravel 5.3 MongoDB库’jenssegers / laravel-mongodb’中的hasMany关系问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。