Laravel Non-N/A 个值的模型平均值
Laravel Model Average of Non-N/A Values
我正在寻找对 Laravel 中子模型的值进行平均的最佳方法,但忽略了一些值。我要计算平均值的列设置为 varchar,但包含 0 到 10 之间的数字或值 'N/A'。我需要在此列上计算两个平均值,一个忽略 'N/A' 值,一个将 'N/A' 值计为 0。我已经编写了如何计算平均值的函数,但我希望得到一些输入执行此操作的最佳方法。
我希望能够像这样调用这些函数:
$web_scored_tq = $website->scored_tq;
$web_uscored_tq = $website->unscored_tq;
函数:
public function scored_tq() {
$valid_click_ads = $this->valid_click_ads;
$total = 0;
$num = 0;
foreach ($valid_click_ads as $valid_click_ad) {
if ($valid_click_ad->tq != "N/A") {
$total += $valid_click_ad->tq;
++$num;
}
}
$scored_tq = $total / $num;
}
public function unscored_tq() {
$valid_click_ads = $this->valid_click_ads;
$total = 0;
$num = 0;
foreach ($valid_click_ads as $valid_click_ad) {
if ($valid_click_ad->tq != "N/A") {
$total += $valid_click_ad->tq;
++$num;
} else {
++$num;
}
}
$unscored_tq = $total / $num;
}
我找到了laravel的模型getFooAttribute!我用它来将以下功能添加到我的网站模型中,现在可以调用 $website->scored_tq 或 $website->unscored_tq.
public function getScoredTqAttribute() {
$valid_click_ads = $this->valid_click_ads;
$total = 0;
$num = 0;
foreach ($valid_click_ads as $valid_click_ad) {
if ($valid_click_ad->tq != -1) {
$total += $valid_click_ad->tq;
++$num;
}
}
if ( $num != 0 ) {
$scored_tq = $total / $num;
} else {
$scored_tq = '-';
}
return $scored_tq;
}
public function getUnscoredTqAttribute() {
$valid_click_ads = $this->valid_click_ads;
$total = 0;
$num = 0;
foreach ($valid_click_ads as $valid_click_ad) {
if ($valid_click_ad->tq != -1) {
$total += $valid_click_ad->tq;
}
++$num;
}
if ( $num != 0 ) {
$unscored_tq = $total / $num;
} else {
$unscored_tq = '-';
}
return $unscored_tq;
}
我还将数据的结构更改为整数,其中 "N/A" 值更改为 -1。
我正在寻找对 Laravel 中子模型的值进行平均的最佳方法,但忽略了一些值。我要计算平均值的列设置为 varchar,但包含 0 到 10 之间的数字或值 'N/A'。我需要在此列上计算两个平均值,一个忽略 'N/A' 值,一个将 'N/A' 值计为 0。我已经编写了如何计算平均值的函数,但我希望得到一些输入执行此操作的最佳方法。
我希望能够像这样调用这些函数:
$web_scored_tq = $website->scored_tq;
$web_uscored_tq = $website->unscored_tq;
函数:
public function scored_tq() {
$valid_click_ads = $this->valid_click_ads;
$total = 0;
$num = 0;
foreach ($valid_click_ads as $valid_click_ad) {
if ($valid_click_ad->tq != "N/A") {
$total += $valid_click_ad->tq;
++$num;
}
}
$scored_tq = $total / $num;
}
public function unscored_tq() {
$valid_click_ads = $this->valid_click_ads;
$total = 0;
$num = 0;
foreach ($valid_click_ads as $valid_click_ad) {
if ($valid_click_ad->tq != "N/A") {
$total += $valid_click_ad->tq;
++$num;
} else {
++$num;
}
}
$unscored_tq = $total / $num;
}
我找到了laravel的模型getFooAttribute!我用它来将以下功能添加到我的网站模型中,现在可以调用 $website->scored_tq 或 $website->unscored_tq.
public function getScoredTqAttribute() {
$valid_click_ads = $this->valid_click_ads;
$total = 0;
$num = 0;
foreach ($valid_click_ads as $valid_click_ad) {
if ($valid_click_ad->tq != -1) {
$total += $valid_click_ad->tq;
++$num;
}
}
if ( $num != 0 ) {
$scored_tq = $total / $num;
} else {
$scored_tq = '-';
}
return $scored_tq;
}
public function getUnscoredTqAttribute() {
$valid_click_ads = $this->valid_click_ads;
$total = 0;
$num = 0;
foreach ($valid_click_ads as $valid_click_ad) {
if ($valid_click_ad->tq != -1) {
$total += $valid_click_ad->tq;
}
++$num;
}
if ( $num != 0 ) {
$unscored_tq = $total / $num;
} else {
$unscored_tq = '-';
}
return $unscored_tq;
}
我还将数据的结构更改为整数,其中 "N/A" 值更改为 -1。