显示在Laravel MongoDB中嵌入许多数据

时间:2015-09-19 08:39:49

标签: php mongodb laravel

我有一个包含以下方案的数据库:

{
    "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.   

请帮我展示一下。

1 个答案:

答案 0 :(得分:0)

我在那里看到两个问题。

  1. 方法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);
        }
    }
    
  2. 在您看来,变量$j应该是Comment的实例。您可以访问以下评论的主题:

    // Raw PHP view:
    <?php
    foreach ($g as $j) 
    {
        echo $j->subject;
    }
    ?>
    
    // Blade syntax:
    @foreach($g as $j)
        {{ $j->subject }}
    @endforeach
    
  3. 如需进一步阅读,请查看官方jenssegers/laravel-mongodb文档,Embeds Many Relations部分:

    https://github.com/jenssegers/laravel-mongodb#embedsmany-relations