【问题标题】:Laravel where and group byLaravel 在哪里和分组
【发布时间】:2018-12-08 15:58:25
【问题描述】:

我有两张桌子 项目:

  • 身份证
  • 标题

mark_item:

  • id

  • item_id

我想在这两个表之间建立一个连接

  $item_mark = Item::select('item.*','mark_item.*')
                        ->join('mark_item', 'mark_item.item_id', '=', 'item.id')
                        ->where('item.title','=','ITEM_TEST')
                        ->get();

但是在显示时,我知道我在数据库中有一个名为 ITEM_TEST 的标题

Example : 


    ITEM_TEST
     -Mark1
    ITEM_TEST 
     -Mark2
    ITEM_TEST 
     -Mark3

我想显示:

ITEM_TEST

         -Mark1

         -Mark2

         -Mark3

【问题讨论】:

  • 你想要什么???
  • 你的问题是?
  • 尝试将模型stackoverflow.com/a/42515792/3016038之间的 hasOne 替换为 hasMany 关系
  • 大概您将item_test 与 3 个标记相关联,这就是您获得 3 次的原因。使用eloquent relationships 获得更有意义的内容。
  • @LeoinstanceofKelmendi 我编辑了帖子

标签: mysql sql laravel


【解决方案1】:

不确定这两个表之间有什么样的关系 -

如果它是一对一的关系,请使用以下给定的查询。 如果您想要列,只需将它们添加到以逗号分隔的选择中即可。

$items = DB::table('item')
            ->select('item.title')
            ->leftJoin('mark_item', 'users.id', '=', 'posts.user_id')
            ->get();

Check Larvel Query doc for more info

【讨论】:

    【解决方案2】:

    您的表格

    item(id, title)
    mark_item(id, item_id, name) //here assuming name filed contains 'Mark1', 'Mark2' etc
    

    从这些表中可以清楚地看出,itemmark_item 之间存在OneToMany 关系。在 laravel 中,您可以轻松地定义这些关系并通过它获取数据。

    首先你需要为这两个表创建模型

    物品模型

    class Item extends Model {
         $table = 'item'; 
         public function marks(){
            return $this->hasMany(ItemMark::class);
         }
    }
    

    ItemMark 模型

    class ItemMark extends Model {
         $table = 'item_mark'; 
         public function item(){
            return $this->belongsTo(Item::class);
         }
    }
    

    现在获取数据

    $item = Item::with('marks')->where('item.title','=','ITEM_TEST')->first();
    echo $item->title;
    foreach($item->marks as $mark){
       echo $mark->name;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 2015-04-22
      • 1970-01-01
      • 2012-12-26
      相关资源
      最近更新 更多