【问题标题】:Laravel selection from pivot table从数据透视表中选择 Laravel
【发布时间】:2014-10-22 10:44:46
【问题描述】:

我有三个表:users、items 和 user_items。一个用户有很多物品,一个物品属于很多用户。

**Users**
id
username
password

**Items**
id
name

**User_items**
id
user_id
item_id

型号:

class User extends Eloquent {
    public function items()
    {
        return $this->belongsToMany('Item', 'user_items', 'item_id', 'user_id');
    }
}

class Item extends Eloquent {
    public function users()
    {
        return $this->belongsToMany('User', 'user_items', 'user_id', 'item_id');
    }
}

我需要选择所有项目表,打印它并突出显示属于特定用户 id=1 的行。

选择突出显示的输出:

什么是正确的做法(以 laravel 风格)?

【问题讨论】:

  • 您能给我们展示您的模型,以便我们知道您的关系是如何建立的吗?

标签: php laravel eloquent pivot-table


【解决方案1】:

你可以这样使用它

public function user_items()
    {
        return $this->belongsToMany('User', 'user_items', 'user_id', 'item_id')->withPivot('id');
    }

这样你可以访问第三个表的值。

一些有用的链接- http://www.developed.be/2013/08/30/laravel-4-pivot-table-example-attach-and-detach/ http://vegibit.com/many-to-many-relationships-in-laravel/

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

【讨论】:

    【解决方案2】:

    你可以这样做......

    class User extends Eloquent {
        public function items()
        {
            return $this->belongsToMany('Item', 'user_items', 'item_id', 'user_id')->withPivot('id');
        }
    }
    
    class Item extends Eloquent {
        public function users()
        {
            return $this->belongsToMany('User', 'user_items', 'user_id', 'item_id')->withPivot('id');
        }
    }
    

    来自控制器..

    $user_id = 2;
    Item::with(['users'=>function($q) use ($user_id){$q->where('user_id',$user_id);}])->get();
    

    在列出一行时,您可以突出显示该行,只需使用条件作为每个项目->用户是否为空白。

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 1970-01-01
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      相关资源
      最近更新 更多