我试图找出在Doctrine 2中做到这一点的最佳方法.
我有一个账户实体,其中OneToMany为交易实体.我需要通过帐户过滤来自Transaction的所有值.在SQL中是这样的:SELECT a.*, SUM(t.amount) AS balance FROM account a INNER JOIN transaction t ON t.account_id = a.id
直接在实体上
class Account {
// some other definitions
/**
* @OneToMany(targetEntity="Transaction", mappedBy="account")
*/
private $transactions;
public function getBalance() {
$balance = 0;
foreach ($this->transactions as $transaction){
$balance += $transaction->getAmount();
}
return $balance;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这是最糟糕的方式,因为它获取所有相关交易以获得其金额.
使用存储库
class TransactionRepository {
public function getBalanceByAccount(Account $account){
$query = $this->em->createQuery("SELECT SUM(t.amount) FROM Transaction t INNER JOIN t.Account a WHERE a.id = ?");
// …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一些 .flac 文件转换为 .mp3,以便将其导入 iTunes。我尝试使用 find、xargs 和 ffmpeg,但 xargs 给我一个未终止的引号错误(因为我的文件名中有引号)。
这是我的命令行:
MacKassner:Geto Boys kassner$ find . -type f | egrep "\.flac$" | xargs -I {} ffmpeg -i {} -ab 192k -acodec libmp3lame -ac 2 {}.mp3
Run Code Online (Sandbox Code Playgroud)
它停止并在文件名“Talkin' Loud Ain't Saying Nothin'.flac”中引发错误。
有什么技巧可以让这个发挥作用吗?
- 仅用查找解决 - 查找。-type f -name "*.flac" -exec ffmpeg -i {} -ab 192k -acodec libmp3lame -ac 2 {}.mp3 \;