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 只有 Name 和 Email 在 Silver 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();
假设我有会员模型
我只想获取成员名称数组和电子邮件。我怎样才能做到这一点。
可能的解决方案:
$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 只有 Name 和 Email 在 Silver 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();