diff --git a/examples/sqlx-mysql/Readme.md b/examples/sqlx-mysql/Readme.md
index f7e5d7bc..77a90bd6 100644
--- a/examples/sqlx-mysql/Readme.md
+++ b/examples/sqlx-mysql/Readme.md
@@ -32,15 +32,27 @@ Model { id: 2, name: "Rasberry", cake_id: Some(1) }
Model { id: 3, name: "Strawberry", cake_id: Some(2) }
+Model { id: 4, name: "Apple", cake_id: None }
+
+Model { id: 5, name: "Banana", cake_id: None }
+
+Model { id: 6, name: "Cherry", cake_id: None }
+
+Model { id: 7, name: "Lemon", cake_id: None }
+
+Model { id: 8, name: "Orange", cake_id: None }
+
+Model { id: 9, name: "Pineapple", cake_id: None }
+
===== =====
find cakes and fruits: SELECT `cake`.`id` AS `A_id`, `cake`.`name` AS `A_name`, `fruit`.`id` AS `B_id`, `fruit`.`name` AS `B_name`, `fruit`.`cake_id` AS `B_cake_id` FROM `cake` LEFT JOIN `fruit` ON `cake`.`id` = `fruit`.`cake_id`
-(Model { id: 1, name: "New York Cheese" }, Model { id: 2, name: "Rasberry", cake_id: Some(1) })
+(Model { id: 1, name: "New York Cheese" }, Some(Model { id: 1, name: "Blueberry", cake_id: Some(1) }))
-(Model { id: 1, name: "New York Cheese" }, Model { id: 1, name: "Blueberry", cake_id: Some(1) })
+(Model { id: 1, name: "New York Cheese" }, Some(Model { id: 2, name: "Rasberry", cake_id: Some(1) }))
-(Model { id: 2, name: "Chocolate Forest" }, Model { id: 3, name: "Strawberry", cake_id: Some(2) })
+(Model { id: 2, name: "Chocolate Forest" }, Some(Model { id: 3, name: "Strawberry", cake_id: Some(2) }))
===== =====
@@ -48,7 +60,7 @@ find one by primary key: SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `ca
Model { id: 1, name: "New York Cheese" }
-find one by like: SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`name` LIKE '%chocolate%' LIMIT 1
+find one by name: SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`name` LIKE '%chocolate%' LIMIT 1
Some(Model { id: 2, name: "Chocolate Forest" })
@@ -68,15 +80,11 @@ SelectResult { name: "Chocolate Forest", num_of_fruits: 1 }
===== =====
-find cakes and fillings: SELECT `cake`.`id` AS `A_id`, `cake`.`name` AS `A_name`, `filling`.`id` AS `B_id`, `filling`.`name` AS `B_name` FROM `cake` LEFT JOIN `cake_filling` ON `cake`.`id` = `cake_filling`.`cake_id` LEFT JOIN `filling` ON `cake_filling`.`filling_id` = `filling`.`id`
+find cakes and fillings: SELECT `cake`.`id` AS `A_id`, `cake`.`name` AS `A_name`, `filling`.`id` AS `B_id`, `filling`.`name` AS `B_name` FROM `cake` LEFT JOIN `cake_filling` ON `cake`.`id` = `cake_filling`.`cake_id` LEFT JOIN `filling` ON `cake_filling`.`filling_id` = `filling`.`id` ORDER BY `cake`.`id` ASC
-(Model { id: 1, name: "New York Cheese" }, Model { id: 1, name: "Vanilla" })
+(Model { id: 1, name: "New York Cheese" }, [Model { id: 1, name: "Vanilla" }, Model { id: 2, name: "Lemon" }])
-(Model { id: 1, name: "New York Cheese" }, Model { id: 2, name: "Lemon" })
-
-(Model { id: 2, name: "Chocolate Forest" }, Model { id: 2, name: "Lemon" })
-
-(Model { id: 2, name: "Chocolate Forest" }, Model { id: 3, name: "Mango" })
+(Model { id: 2, name: "Chocolate Forest" }, [Model { id: 2, name: "Lemon" }, Model { id: 3, name: "Mango" }])
find fillings for cheese cake: SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`id` = 1 LIMIT 1
SELECT `filling`.`id`, `filling`.`name` FROM `filling` INNER JOIN `cake_filling` ON `cake_filling`.`filling_id` = `filling`.`id` INNER JOIN `cake` ON `cake`.`id` = `cake_filling`.`cake_id` WHERE `cake`.`id` = 1
diff --git a/examples/sqlx-mysql/src/select.rs b/examples/sqlx-mysql/src/select.rs
index 8224caf1..fc4f2d07 100644
--- a/examples/sqlx-mysql/src/select.rs
+++ b/examples/sqlx-mysql/src/select.rs
@@ -66,7 +66,10 @@ async fn find_all(db: &DbConn) -> Result<(), QueryErr> {
async fn find_together(db: &DbConn) -> Result<(), QueryErr> {
print!("find cakes and fruits: ");
- let both = Cake::find().left_join_and_select_also(Fruit).all(db).await?;
+ let both = Cake::find()
+ .left_join_and_select_also(Fruit)
+ .all(db)
+ .await?;
println!();
for bb in both.iter() {
@@ -141,7 +144,10 @@ async fn count_fruits_by_cake(db: &DbConn) -> Result<(), QueryErr> {
async fn find_many_to_many(db: &DbConn) -> Result<(), QueryErr> {
print!("find cakes and fillings: ");
- let both = Cake::find().left_join_and_select_also(Filling).all(db).await?;
+ let both = Cake::find()
+ .left_join_and_select_with(Filling)
+ .all(db)
+ .await?;
println!();
for bb in both.iter() {
@@ -211,7 +217,7 @@ async fn find_together_json(db: &DbConn) -> Result<(), QueryErr> {
print!("find cakes and fruits: ");
let cakes_fruits = Cake::find()
- .left_join_and_select_also(Fruit)
+ .left_join_and_select_with(Fruit)
.into_json()
.all(db)
.await?;
diff --git a/src/entity/model.rs b/src/entity/model.rs
index acf21c0d..81821c68 100644
--- a/src/entity/model.rs
+++ b/src/entity/model.rs
@@ -15,7 +15,7 @@ pub trait FromQueryResult {
where
Self: Sized;
- fn from_query_result_opt(res: &QueryResult, pre: &str) -> Result