|
@@ -130,8 +130,23 @@ class CRUD:
|
|
|
conditions: Optional[Dict] = None,
|
|
conditions: Optional[Dict] = None,
|
|
|
order_by: Optional[str] = None,
|
|
order_by: Optional[str] = None,
|
|
|
ascending: bool = True,
|
|
ascending: bool = True,
|
|
|
|
|
+ join_conditions: Optional[list] = None, # 新增:支持多个JOIN
|
|
|
):
|
|
):
|
|
|
query = select(self.model)
|
|
query = select(self.model)
|
|
|
|
|
+ # 处理JOIN逻辑
|
|
|
|
|
+ if join_conditions:
|
|
|
|
|
+ for join_info in join_conditions:
|
|
|
|
|
+ joined_model = join_info.get("model")
|
|
|
|
|
+ on_clause = join_info.get("on")
|
|
|
|
|
+ is_outer = join_info.get("is_outer", False)
|
|
|
|
|
+
|
|
|
|
|
+ if not joined_model or not on_clause:
|
|
|
|
|
+ continue
|
|
|
|
|
+
|
|
|
|
|
+ if is_outer:
|
|
|
|
|
+ query = query.outerjoin(joined_model, on_clause)
|
|
|
|
|
+ else:
|
|
|
|
|
+ query = query.join(joined_model, on_clause)
|
|
|
if conditions:
|
|
if conditions:
|
|
|
for key, value in conditions.items():
|
|
for key, value in conditions.items():
|
|
|
column = getattr(self.model, key)
|
|
column = getattr(self.model, key)
|