显示所有包含标签的博客

时间:2015-02-09 17:21:07

标签: php mysql laravel laravel-4

这是this question的延续。我正在学习使用模型连接,但我无法让它们工作。

这是我的表结构:

这是我的控制器:

public function Tag($data=NULL)
{
    $BlogData = Tag::with('blogs')->where('Name', $data)->get();
    return $last_query = end($BlogData);
    return View::make('tag')->with('BlogData', $BlogData);
}

这是我的标签模型:

<?php
class Tag extends Eloquent 
{
    protected $table = 'tags';

    public static $rules = array(
        'BlogTitle' =>  array('required'),
        'BlogBody' =>  array('required')
        );
      protected $fillable = array('BlogTitle', 'BlogBody');

    public function blogs(){
        return $this->belongsToMany('Blog');
    }

}

这是我的博客模型:

<?php
class Blog extends Eloquent 
{
    protected $table = 'blog';

    public static $rules = array(
        'BlogTitle' =>  array('required'),
        'BlogBody' =>  array('required')
        );
      protected $fillable = array('BlogTitle', 'BlogBody');

      public function tags(){
        return $this->belongsToMany('Tag');
    }

}

以下是我的观点:

@extends('layout.master')
@section('body')
    <div class="jumbotron">
    @foreach ($BlogData as $Blog)
        Tag :{{$Blog->Name}}

        {{$Blog->tags;}}
    @endforeach
    </div>
@stop

如何显示所有包含标签的博客?

1 个答案:

答案 0 :(得分:0)

您可以按whereHas的某种关系过滤模型:

$BlogData = Blog::with('tags')->whereHas('tags', function($q) use $data){
    $q->where('Name', $data);
})->get();