0
私は非常に複雑なdbクエリを持っていますが、私はそれを短くして雄弁にする方がいいですか? 私のモデルと彼のdbは:Laravel eloquent from DB
class Order extends Model
{
public $timestamps = false;
public $incrementing = false;
public function products()
{
return $this->hasMany(OrderProducts::class);
}
public function statuses()
{
return $this->belongsToMany(OrderStatusNames::class, 'order_statuses', 'order_id', 'status_id');
}
public function actualKioskOrders()
{
return
$rows = DB::select("SELECT o.id, o.number, o.name client_name, o.phone,
o.email, o.created_at order_date, osn.name actual_status
FROM orders o
JOIN order_statuses os ON os.order_id = o.id
JOIN (SELECT o.id id, MAX(os.created_at) last_status_date FROM orders o
JOIN order_statuses os ON os.order_id = o.id GROUP BY o.id) t
ON t.id = os.order_id AND t.last_status_date = os.created_at
JOIN order_status_names osn ON osn.id = os.status_id
WHERE os.status_id != 3");
}
}
ワウですが、この選択はこの場合のORderにのみ適用されますか?他の結合されたテーブルから他の列のデータも必要とするためです。私はこれを選択してもらえますか? – wenus
はい、SQLクエリでやったように、テーブル名の前に接頭辞を付けることができます。これにより、選択した列で塗りつぶされたモデルのコレクションが返されます。 –
私の質問を雄弁に変えるのは難しいですよ! – wenus