首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5,使用关联/数据透视表过滤数据库查询

Laravel 5,使用关联/数据透视表过滤数据库查询
EN

Stack Overflow用户
提问于 2015-06-06 13:42:48
回答 1查看 657关注 0票数 0

我想要的是与项目相关的所有行业的清单。我可以获得的是使用关联表的每个项目的所有行业ID。我无法知道如何从这些ID返回每个行业->名称。

我的数据库中有三个表:项目、projects_industries和行业。“projects_industries”表有'id‘、'project_id’和'industries_id‘。

下面的代码返回一个空的html页。谢谢你的帮助/建议!

ProjectsController

代码语言:javascript
复制
public function show(Project $project){
....$projectsindustries = DB::table('projects_industries')->select('*')->where('projects_id', $project->id)->get();
....$industries = Industry::all();
....return view('projects.show', compact('project', 'projectsindustries', 'industries'));
}

顺便说一下,我知道$projectsindustries数据库查询可以工作。

刀片视图

代码语言:javascript
复制
@if($projectsindustries)
....<ul>
........@foreach($projectsindustries as $projectindustry)
............@foreach($industries as $industry)
................<li><a href="#">{{ $industry::where('id', '=', '$projectindustry->industries_id')->get()->name; }}</a></li> 
............@endforeach
........@endforeach
....</ul>
@else
....<p>no industries.</p>
@endif
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-26 17:08:57

这就是我如何最终解决我的问题..。

数据库表和字段保持不变。

项目控制器

代码语言:javascript
复制
<?php namespace App\Http\Controllers;

use DB;
use App\Project;
use App\ProjectIndustry;
use App\Industry;
    public function show(Project $project)
    {
    $projectsindustries = ProjectIndustry::where('projects_id', '=', $project->id)
        ->join('industries', 'industries_id', '=', 'industries.id')->get();

    return view('projects.show', compact('project', 'projectsindustries'));
    }

项目模型

使用照明\数据库\雄辩\模型;

类Project扩展模型{

代码语言:javascript
复制
public function industries() {
    return $this->belongsToMany('Industry', 'projects_industries', 'projects_id', 'industries_id');
}

项目行业模型

使用照明\数据库\雄辩\模型;

类ProjectIndustry扩展模型{

代码语言:javascript
复制
protected $table = 'projects_industries';

public function project()
{
return $this->belongsTo('Project', 'id', 'projects_id');
}

public function industry()
{
return $this->hasMany('Industry', 'id', 'industries_id');
}

行业模型

代码语言:javascript
复制
<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Industry extends Model {

    public function project()
    {
    return $this->belongsTo('Project');
    }

}

项目视图项目/show.blde.php

代码语言:javascript
复制
@if($projectsindustries)
<h3>Industries:</h3>
    <ul>
        @foreach($projectsindustries as $projectindustry)
            <li><a href="{{ route('industries.show', $projectindustry->slug) }}">{{ $projectindustry->name }}</a></li>
        @endforeach
    </ul>
@else
    <p>no industries.</p>
@endif

我希望这能对某人有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30683560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档