多对多关系 OrderBy - Laravel 查询生成器
many-to-many relationship OrderBy - Laravel query builder
我正在尝试按选项 table 中的价格订购产品
价格可以是多种货币,因为我添加 dolor_price 计算如下代码。
但结果是以下错误
SQLSTATE[42S22]:未找到列:1054 未知列 'options.dolor_price' 'order clause'
$products=Product::with(["options"=> function($option){
$option->where('name' ,'unique name' );
$option->selectSub(function ($q) {
$rateEruToDolor =2;
$rateAedToDolor =3;
$q->selectRaw(' IF(currency=0,price * ?, IF(currency=1,price * ?, price))',
[$rateEruToDolor,$rateAedToDolor]);
}, 'dolor_price');
}]);
$products->orderBy('options.dolor_price');
dd($products->get()->toArray());
试试这个:
$rateEruToDolor =2;
$rateAedToDolor =3;
$products = Product::join('product_options', 'products.id', '=', 'product_options.product_id')
->join('options', 'product_options.option_id', '=', 'options.id')
->selectRaw('price, currency, IF(currency=0, price * ?, IF(currency=1, price * ?, price))
as dolor_price', [$rateEruToDolor, $rateAedToDolor]);
$products->orderBy('dolor_price');
dd($products->get()->toArray());
列出 products/options table 中的所有字段,以及上面 selectRaw('xxx, xxx, price, currency, IF ...)
方法中已经列出的 price
和 currency
。
希望这有帮助
我正在尝试按选项 table 中的价格订购产品
价格可以是多种货币,因为我添加 dolor_price 计算如下代码。
但结果是以下错误
SQLSTATE[42S22]:未找到列:1054 未知列 'options.dolor_price' 'order clause'
$products=Product::with(["options"=> function($option){
$option->where('name' ,'unique name' );
$option->selectSub(function ($q) {
$rateEruToDolor =2;
$rateAedToDolor =3;
$q->selectRaw(' IF(currency=0,price * ?, IF(currency=1,price * ?, price))',
[$rateEruToDolor,$rateAedToDolor]);
}, 'dolor_price');
}]);
$products->orderBy('options.dolor_price');
dd($products->get()->toArray());
试试这个:
$rateEruToDolor =2;
$rateAedToDolor =3;
$products = Product::join('product_options', 'products.id', '=', 'product_options.product_id')
->join('options', 'product_options.option_id', '=', 'options.id')
->selectRaw('price, currency, IF(currency=0, price * ?, IF(currency=1, price * ?, price))
as dolor_price', [$rateEruToDolor, $rateAedToDolor]);
$products->orderBy('dolor_price');
dd($products->get()->toArray());
列出 products/options table 中的所有字段,以及上面 selectRaw('xxx, xxx, price, currency, IF ...)
方法中已经列出的 price
和 currency
。
希望这有帮助