Я использую MongoDB
библиотеку в Laravel 5.3
. У меня две коллекции в MongoDB
, и я хочу сделать связь hasMany
.hasMany вопрос о проблемах в Laravel 5.3 + Библиотека MongoDB 'jenssegers/laravel-mongodb'
MongoDB:
первая коллекция: Сотрудник
{
"_id" : ObjectId("586ca8c71a72cb07a681566d"),
"employee_name" : "John",
"employee_description" : "test description",
"employee_email" : "[email protected]",
"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" : "[email protected]",
"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
(
)
)
Как это исправить?
Кажется, что у вас уже есть эти коллекции, и вы хотите, чтобы библиотека Jenssegers соответствовала вашей структуре, вместо того чтобы соответствовать вашей структуре Jenssegers, это правильно? Так что, может быть, ваш вопрос на самом деле заключается в том, «как заставить библиотеку Jenssegers работать с этой структурой?»? Как отмечено в ответе ниже, с этим lib вы не используете сводную таблицу, но хотите (или должны работать) в любом случае? – Parziphal
@ Parziphal, да, вы правы. У меня есть коллекции. Не могли бы вы ответить на этот вопрос, отправленный в переполнение стека. Это тот же вопрос, но разница заключается в том, что отношения коллекции 'http://stackoverflow.com/questions/41518875/laravel-mongodb-library-jenssegers-laravel-mongodb-hasmany-relationship-is-not ' – okconfused