0

ブログからページ分割された結果を返す次の Laravel Fluent クエリがあります。idPosts テーブルの列を出力に含めようとしていますが$post->id、ビューでは、ページ分割された結果でその投稿の数値キーが返されます。たとえば、3 番目の投稿の場合$post->id、テーブル内の ID は 24 のようになりますが、3 が返されます。

これがクエリです-

$posts = DB::table('posts')
    ->join('blog_categories', 'blog_categories.id', '=', 'posts.blog_category_id')
    ->order_by('created_at', 'desc')
    ->paginate(10);

ページネーションを壊さずにid列を取得するにはどうすればよいですか?postID

ありがとう!

4

2 に答える 2

1

投稿と blog_categories の両方に独自の id フィールドがあるため、デフォルトで最初のレコード (通常は "1") になります。この問題を解決するために、Eloquent ORM を使用することを検討します。

http://laravel.com/docs/database/eloquent

次に、次のようなことができます。

$posts = Post::order_by('created_at', 'desc')->paginate(10);

そして、ビューから:

@foreach($posts as $post)
    {{ $post->id }}
    {{ $post->blog_cat->.... }}
@endforeach

プロジェクトの正確な要件はわかりませんが、これで正しい方向に進むはずです。

于 2013-01-20T15:19:05.177 に答える
0

ここに作業バージョンがあります:

移行/データベース

    // Blog Categories
    Schema::create('categories', function($table) {

        $table->engine = 'InnoDB';      
        $table->increments('id');
        $table->string('name', 255);
        $table->timestamps();   

    });

    // Posts
    Schema::create('posts', function($table) {

        $table->engine = 'InnoDB';
        $table->increments('id');
        $table->integer('category_id')->unsigned();
        $table->string('title', 255);
        $table->text('body');
        $table->timestamps();   

        $table->foreign('category_id')->references('id')->on('categories');

    }); 

    // Fake Data
    $category = new Category;
    $category->name = 'Category 1';
    $category->save();

    $category = new Category;
    $category->name = 'Category 2';
    $category->save();      

    $post = new Post;
    $post->title = 'Blog Post 1';
    $post->body = 'Lorem Ipsum';
    $post->category_id = 2;
    $post->save();

    $post = new Post;
    $post->title = 'Blog Post 2';
    $post->body = 'Lorem Ipsum';
    $post->category_id = 1;
    $post->save();

投稿モデル

class Post extends Eloquent {
    public function Category()
    {
        return $this->belongs_to('Category','category_id');
    }               
}

カテゴリ モデル

class Category extends Eloquent {   
}

データを取り出しています...

foreach (Post::with('Category')->order_by('created_at', 'desc')->take(10)->get() as $post)
{
    echo $post->title."<br/>";
    echo $post->body."<br/>";
    echo $post->category->name."<br/>";
    echo "<br/>\n\n";
}   
于 2013-01-20T18:12:30.207 に答える