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

时间:2016-12-09 06:33:21

标签: php database laravel model silverstripe

我们说我有会员模型

我想获得一系列会员名称和电子邮件。我怎样才能做到这一点 可能的解决方案:

$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

但我直接想要只选择名称电子邮件是否可以 Silver Stripe

我知道laravel select模型是可能的。

3 个答案:

答案 0 :(得分:1)

<强>已更新

实际上你的问题是误导性的,或者我无法理解你想说什么,所以我已经为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'];
}

<小时/> 参考:

使用完整链接

答案 1 :(得分:0)

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

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

答案 2 :(得分:-1)

$members=(array) $members;

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

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

print_r($temp);