php - 如何从 Controller 获取两个对象结果以在 Laravel5 中查看

标签 php mysql laravel

这是我用于获取两个对象的 Controller 代码。在我使用的每个对象的末尾 ->get();显示错误 undefied 变量。但是当我使用 ->first();它工作正常但只显示第一条记录。但我需要整个记录。

public function ratingdata()
{
      $pacra['pacra'] = DB::table('og_ratings AS p')

           ->select('p.client_id as Id','p.ppl_date as Ppl','p.notification_date as Notification ',
            'p.dissemination_date as Dissemination', 'p.rating_type_id as ratingTypeId',
            'p.rating_scale_id',  'p.pacra_action as Action' , 'og_companies.name as Entity',
            'og_main_sectors.title as Industry', 'p.detail_report as DetailReport', 

            ) 
      ->get();




       $jcr['jcr'] = DB::table('og_ratings_jcr as t')

               ->select('t.client_id as id',
                't.jcr_dissemination_date as Dissemination', 
                't.rating_type_id as ratingTypeId',
                't.rating_scale_id',  
                't.jcr_action as Action' , 'og_companies.name as Entity',
                't.press_release_jcr as PressRelease',
                'og_actions.title as RatingAction',
                'og_outlooks.title as Outlook',
                'og_sterms.title as RatingST',
                'og_lterms.title as RatingLT',
                'og_segments.title',
                'og_rating_scales.title as RatingScale',
                'og_fund_types.title as fundtype',
                't.isActive as isActive' , 'og_main_sectors.title AS Industry' )
          ->get();

           return view('RatingsPacra', compact('pacra' , 'jcr'));
}

最佳答案

我发现您遗漏了表之间的关系,以及@apokryfos 提到的额外 ,

尝试这样的事情:

public function ratingData()
{
    $pacra['pacra'] = \DB::connection()
        ->table('og_ratings')
        ->leftJoin('og_companies', 'og_companies.id', '=', 'og_ratings.og_companies_id')
        ->leftJoin('og_main_sectors', 'og_main_sectors.id', '=', 'og_ratings.og_main_sectors_id')
        ->select([
            'og_ratings.client_id as Id',
            'og_ratings.ppl_date as Ppl',
            'og_ratings.notification_date as Notification',
            'og_ratings.dissemination_date as Dissemination',
            'og_ratings.rating_type_id as ratingTypeId',
            'og_ratings.rating_scale_id',
            'og_ratings.pacra_action as Action',
            'og_companies.name as Entity',
            'og_main_sectors.title as Industry',
            'og_ratings.detail_report as DetailReport',
        ])
        ->get();

    $jcr['jcr'] = \DB::connection()
        ->table('og_ratings_jcr')
        ->leftJoin('og_actions', 'og_actions.id', '=', 'og_ratings_jcr.og_actions_id')
        ->leftJoin('og_outlooks', 'og_outlooks.id', '=', 'og_ratings_jcr.og_outlooks_id')
        ->leftJoin('og_sterms', 'og_sterms.id', '=', 'og_ratings_jcr.og_sterms_id')
        ->leftJoin('og_lterms', 'og_lterms.id', '=', 'og_ratings_jcr.og_lterms_id')
        ->leftJoin('og_segments', 'og_segments.id', '=', 'og_ratings_jcr.og_segments_id')
        ->leftJoin('og_rating_scales', 'og_rating_scales.id', '=', 'og_ratings_jcr.og_rating_scales_id')
        ->leftJoin('og_fund_types', 'og_fund_types.id', '=', 'og_ratings_jcr.og_fund_types_id')
        ->select([
            'og_ratings_jcr.client_id as id',
            'og_ratings_jcr.jcr_dissemination_date as Dissemination',
            'og_ratings_jcr.rating_type_id as ratingTypeId',
            'og_ratings_jcr.rating_scale_id',
            'og_ratings_jcr.jcr_action as Action', 'og_companies.name as Entity',
            'og_ratings_jcr.press_release_jcr as PressRelease',
            'og_actions.title as RatingAction',
            'og_outlooks.title as Outlook',
            'og_sterms.title as RatingST',
            'og_lterms.title as RatingLT',
            'og_segments.title',
            'og_rating_scales.title as RatingScale',
            'og_fund_types.title as fundtype',
            'og_ratings_jcr.isActive as isActive', 'og_main_sectors.title AS Industry',
        ])
        ->get();

    return view('RatingsPacra', compact('pacra', 'jcr'));
}

您应该在哪里更改表之间的外键。

你仍然可以继续使用表别名,我只是不想使用它们,因为它们有时在 Laravel/Doctrine Dbal 中无法按预期工作。

为了符合 PSR-1 标准,我还将方法名称从 ratingdata 更新为 ratingData:

https://www.php-fig.org/psr/psr-1/

您还可以将 \DB:connection()->table(.. 返回到 DB::table(...,这只是一种自以为是的方式做吧。

关于php - 如何从 Controller 获取两个对象结果以在 Laravel5 中查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49423023/

相关文章:

mysql - 无法使用 NodeJS 建立与 MySQL 的连接

android - 使用mysql数据库在远程服务器上托管Wcf服务并在Android中使用它

php - Zend Action Controller——重构攻略

php - 使用docker-compose在Docker中运行laravel/lumen

同表MySQL外键失败,错误1005,errno 150

php - App\Models\Order,给定的字符串,在/home/delivery/public_html/laravel_application/app/Http/Controllers/OrderController.php中调用

php - Laravel5 (PHP) 还是 SailsJS (node.js)?

php - 在滚动上加载更多图像(不使用 mysql)

php - Mysql 插入 PHP 冒号、分号和双引号

javascript - 如何在laravel中使用jquery ajax中的formData上传文件