【问题标题】:SilverStripe: how to get only some of the fields of ModelSilverStripe:如何只获取Model的部分字段
【发布时间】:2017-04-24 13:51:08
【问题描述】:

假设我有会员模型

我只想获取成员名称数组和电子邮件。我怎样才能做到这一点。
可能的解决方案:

$members = Member::get(); // it will gives me all members.

$data = [];

foreach($members as $member){
     $temp['Name'] = $member->Name;
     $temp['Email'] = $member->Email;
     $data[] = $temp;
     unset($temp);
}
//got data into $data

但我直接只想选择 NameEmail 是否可以在 Silver Stripe 中选择?

据我所知laravel select 型号是可能的。

【问题讨论】:

    标签: php database laravel model silverstripe


    【解决方案1】:
    $members=(array) $members;
    
    foreach($members as $member){
     $temp['Name'] = $member['Name'];
     $temp['Email'] = $member['Email'];
    }
    

    查看数组$temp 中只有两个成员姓名和电子邮件的结果:

    print_r($temp);
    

    【讨论】:

      【解决方案2】:

      更新

      实际上,您的问题具有误导性,或者我无法理解您想说的内容,因此我为 Laravel 提供了解决方案。但是任何方式都可以尝试以下代码。

      $sqlQuery = new SQLSelect();
      $sqlQuery->setFrom('your_table_name');
      $sqlQuery->selectField('Name', 'Email');
      
      // Get the raw SQL (optional) and parameters
      $rawSQL = $sqlQuery->sql($parameters);
      
      // Execute and return a Query object
      $result = $sqlQuery->execute();
      
      // Iterate over results
      foreach($result as $row) {
        echo $row['Name'];
        echo $row['Email'];
      }
      


      参考:

      使用完整链接

      【讨论】:

      • 我想要这种银色条纹 [警告] class_exists() 期望参数 1 是字符串,给定数组
      • 我想我必须循环这些数据
      【解决方案3】:

      根据 api 文档,->setQueriedColumns() 应该可以限制查询中的列。它返回一个 DataList,您可以使用 ->toArray() 将其转换为数组:

      $members = Member::get()->setQueriedColumns(['Name', 'Email'])->toArray();
      

      【讨论】:

      • 不检查它将返回所有成员模型值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 2021-12-18
      • 2022-08-16
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      相关资源
      最近更新 更多