【问题标题】:How to select field in another table join by eager loading in Laravel如何通过在 Laravel 中预先加载来选择另一个表连接中的字段
【发布时间】:2014-04-25 02:40:33
【问题描述】:

我有 category_to_news 和 news_main 表

category_to_news

  • news_id int
  • 名称变量
  • 标题时间戳

news_main

  • id int
  • 标题变量
  • 图像变量
  • created_at 时间戳

如何按news_main的字段和category_news的字段返回?这个方法我试过了,不行

$posts = Categorytonews::with(array(
    'Newsmain' => function($query)
    {
        $query->orderBy('id', 'DESC')->select(array('title', 'id', 'created_at', 'image'));
    }
    ))
    ->get( );

【问题讨论】:

    标签: laravel-4 eloquent


    【解决方案1】:

    你需要加入这个因为 with() 运行另一个查询,所以在那里订购不会做这项工作:

    $posts = Categorytonews::with('Newsmain') // get all fields from Newsmain
      ->join('news_main', 'category_to_news.news_id', '=', 'news_main.id') // join for ordering
      ->orderBy('news_main.id','desc') // order by joined field
      ->get('category_to_news.*'); // select only main table, you don't need joined fields
                                   // on Categorytonews model - they will be loaded by with()
    

    【讨论】:

      【解决方案2】:
      $posts = Categorytonews::with(array('Newsmain' => function($query)
      {
          $query->select(array('title', 'id', 'created_at', 'image'))->orderBy('id', 'DESC');
      }))->get();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-11
        • 1970-01-01
        • 2018-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-25
        相关资源
        最近更新 更多