我有一个包含以下方案的数据库:
{
"title": "Simple new",
"username": "soimah",
"_id": ObjectId("5569b157bed33066220041ac"),
"comments": [{
"subject": "comment 1",
"_id": ObjectId("5569cc28bed330693eb7acd9")
}]
}
我想显示标题和主题。
我的模特:
<?php
namespace App\Models;
use Jenssegers\Mongodb\Model as Eloquent;
class Testo extends Eloquent {
protected $collection = 'testIN';
protected $fillable = array('title', 'comments.subject');
public function comments() {
return $this - > embedsMany('comments');
}
}
?>
我的控制器:
public function ambl() {
$g = new Testo();
$g = Testo::where('username', '=', 'soimah') - > first() - > comments;
return View('layouts/in', array(
'g' => $g
));
}
我的观点:
<?php
foreach($g as $j) {
echo $j['comments.subject'];
}
?>
数据评论。
subject not show.
请帮我展示一下。
答案 0 :(得分:0)
我在那里看到两个问题。
方法Jenssegers\Mongodb\Model::embedsMany()
期望参数1成为另一个模型的完全限定名称,就像Eloquent中的hasMany
一样。
您应该创建一个模型Comment
并将您的Testo模型调整为以下内容:
<?php
namespace App\Models;
use Jenssegers\Mongodb\Model as Eloquent;
class Testo extends Eloquent
{
protected $collection = 'testIN';
protected $fillable = array('title', 'comments.subject');
public function comments()
{
return $this->embedsMany(Comment::class);
}
}
在您看来,变量$j
应该是Comment
的实例。您可以访问以下评论的主题:
// Raw PHP view:
<?php
foreach ($g as $j)
{
echo $j->subject;
}
?>
// Blade syntax:
@foreach($g as $j)
{{ $j->subject }}
@endforeach
如需进一步阅读,请查看官方jenssegers/laravel-mongodb
文档,Embeds Many Relations
部分:
https://github.com/jenssegers/laravel-mongodb#embedsmany-relations