首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel belongsTo / hasMany

Laravel belongsTo / hasMany
EN

Stack Overflow用户
提问于 2014-08-09 14:54:32
回答 1查看 8.1K关注 0票数 2

我有一个问题,我需要获取所有的图片(路径),我的画廊桌子,拥有一个博物馆和用户谁拥有博物馆。我得到了图片的路径,但这些与拥有博物馆的user_id无关。

因此,简单地说:

每个用户都拥有一个博物馆,一个博物馆有一个有多个图像的画廊(图像url的路径)。

可能表结构

  • 博物馆
    • ID
    • 标题
    • user_id

  • 用户
    • ID
    • 电子邮件
    • 密码

  • 画廊
    • ID
    • museum_id
    • 标题
    • 路径

我的画廊模型:

代码语言:javascript
复制
<?php

class Gallery extends \Eloquent {

protected $fillable = [];

public function museums() {
    //return $this->belongsToMany('Museums', 'id');
    return $this->belongsTo('Gallery', 'museum_id');
}
}

我的博物馆模型

代码语言:javascript
复制
<?php

class Museum extends Eloquent {

protected $fillable = ['user_id', 'title', 'description'];

public function user()
{
    return $this->belongsTo('User');
}

public function gallery()
{
    //return $this->belongsToMany('Gallery', 'museum_id');
    return $this->belongsToMany('Gallery');
}

}

我的用户模型

代码语言:javascript
复制
public function museums()
{
    return $this->hasMany('Museum');
}

还有我的MuseumController

代码语言:javascript
复制
public function show($id)
{
    //
    //$museum = Museum::where('id', '=', $id)->first();
    //return View::make('museums.detail', compact('museum'));
    $museum = Museum::findOrFail($id);
    $gallery = Gallery::with('museums')->get();
    //$museum = Museum::with('gallery')->get();

    return View::make('museums.detail', compact('museum', 'gallery'));
}

在我看来

代码语言:javascript
复制
@foreach ($gallery as $image)
<img src="{{ $image->path }}" />
@endforeach
EN

回答 1

Stack Overflow用户

发布于 2014-08-09 16:28:21

你可以试试这个:

代码语言:javascript
复制
// In User model
public function museum()
{
    return $this->hasOne('Museum');
}

// In Museum model
public function owner()
{
    return $this->belongsTo('User');
}

// In Museum model
public function galleries()
{
    return $this->hasMany('Gallery');
}

// In Gallery model
public function museum()
{
    return $this->belongsTo('Museum');
}

然后在控制器中:

代码语言:javascript
复制
$museums = Museum::with('galleries', 'owner')->get();
return View::make('museums.detail', compact('museums'));

在你看来:

代码语言:javascript
复制
@foreach ($museums as $museum)

    {{ $museum->title }}

    // To get the user id from here
    {{ $museum->owner->id }}

    // Loop all images in this museum
    @foreach($museum->galleries as $image)

        <img src="{{ $image->path }}" />

        // To get the user id from here
        {{ $image->museum->owner->id }}

    @endforeach

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

https://stackoverflow.com/questions/25219798

复制
相关文章

相似问题

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