SilverStripe:如何只获取模型的某些字段

SilverStripe: how to get only some of the fields of Model

假设我有会员模型

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

$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

但我直接想 select 只有 NameEmailSilver Stripe 中是否可行 ?

据我所知laravel select模型是可以的。

$members=(array) $members;

foreach($members as $member){
 $temp['Name'] = $member['Name'];
 $temp['Email'] = $member['Email'];
}

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

print_r($temp);

已更新

实际上您的问题具有误导性,或者我无法理解您想要说的内容,所以我已经给出了 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'];
}


参考:

使用完整链接

根据 api 文档,->setQueriedColumns() should do the trick to limit the columns in the query. It returns a DataList you can convert to an array using ->toArray():

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