Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

->find()时hidden/appen/visible 逻辑问题 #508

Open
yuyachong opened this issue Oct 31, 2023 · 8 comments
Open

->find()时hidden/appen/visible 逻辑问题 #508

yuyachong opened this issue Oct 31, 2023 · 8 comments

Comments

@yuyachong
Copy link

当find为空时会输出null,这时我在->find()->hidden()是会报错的;
但是在->select()->hidden()没有问题
所以,为何不能在find为空时,如果使用hidden可以自动返回null, 而不是Call to a member function hidden() on null
输出统一比较好,我们去自己判断是多余的操作

@axguowen
Copy link

axguowen commented Nov 1, 2023

find为空时本身就返回的null,你在null上面执行hidden方法肯定会报错,select为空是返回的一个空的数据集对象,这个数据集对象是有hidden方法的,只是执行之后会遍历数据集里面的对象依次执行hidden方法,数据集为空也就没有遍历 当然不会报错。
所以在find方法后需要自行判断是否为null,或者使用try catch捕获异常

@yuyachong
Copy link
Author

find为空时本身就返回的null,你在null上面执行hidden方法肯定会报错,select为空是返回的一个空的数据集对象,这个数据集对象是有hidden方法的,只是执行之后会遍历数据集里面的对象依次执行hidden方法,数据集为空也就没有遍历 当然不会报错。 所以在find方法后需要自行判断是否为null,或者使用try catch捕获异常

你没懂我的意思,我的意思是像select可以返回数组对象, find也一样返回, 就不要null了, 有些场景需要同步,反而觉得不统一

@yuyachong
Copy link
Author

find为空时本身就返回的null,你在null上面执行hidden方法肯定会报错,select为空是返回的一个空的数据集对象,这个数据集对象是有hidden方法的,只是执行之后会遍历数据集里面的对象依次执行hidden方法,数据集为空也就没有遍历 当然不会报错。 所以在find方法后需要自行判断是否为null,或者使用try catch捕获异常

当然find有个findOrEmpty方法, 我就觉得 直接用这个方法返回就行, 干嘛非要来个null? 不解

如果能统一, 像是结果结果获取后的操作很会统一舒服, append/hidden这些, 那如果按现在这样,我还要判断一下是不是null, 如果按select来根本不需要判断数组是不是空

@axguowen
Copy link

axguowen commented Nov 1, 2023

find为空时本身就返回的null,你在null上面执行hidden方法肯定会报错,select为空是返回的一个空的数据集对象,这个数据集对象是有hidden方法的,只是执行之后会遍历数据集里面的对象依次执行hidden方法,数据集为空也就没有遍历 当然不会报错。 所以在find方法后需要自行判断是否为null,或者使用try catch捕获异常

当然find有个findOrEmpty方法, 我就觉得 直接用这个方法返回就行, 干嘛非要来个null? 不解

如果能统一, 像是结果结果获取后的操作很会统一舒服, append/hidden这些, 那如果按现在这样,我还要判断一下是不是null, 如果按select来根本不需要判断数组是不是空

那append/hidden就可以给这个空对象追加/隐藏数据了,但是这个数据在数据库中是不存在的,那别的比如save/delete方法是不是会报错?会导致程序更加容易出现问题的,排查问题起来也非常麻烦

@yuyachong
Copy link
Author

find为空时本身就返回的null,你在null上面执行hidden方法肯定会报错,select为空是返回的一个空的数据集对象,这个数据集对象是有hidden方法的,只是执行之后会遍历数据集里面的对象依次执行hidden方法,数据集为空也就没有遍历 当然不会报错。 所以在find方法后需要自行判断是否为null,或者使用try catch捕获异常

当然find有个findOrEmpty方法, 我就觉得 直接用这个方法返回就行, 干嘛非要来个null? 不解
如果能统一, 像是结果结果获取后的操作很会统一舒服, append/hidden这些, 那如果按现在这样,我还要判断一下是不是null, 如果按select来根本不需要判断数组是不是空

那append/hidden就可以给这个空对象追加/隐藏数据了,但是这个数据在数据库中是不存在的,那别的比如save/delete方法是不是会报错?会导致程序更加容易出现问题的,排查问题起来也非常麻烦

你的思维不要陷入一个死循环好不好? 我在讨论框架逻辑, 你在说业务流程, 你能明白我在说什么吗
在append之前,框架对于空数据就跳过了! select不就这么干的吗?

@yuyachong
Copy link
Author

find为空时本身就返回的null,你在null上面执行hidden方法肯定会报错,select为空是返回的一个空的数据集对象,这个数据集对象是有hidden方法的,只是执行之后会遍历数据集里面的对象依次执行hidden方法,数据集为空也就没有遍历 当然不会报错。 所以在find方法后需要自行判断是否为null,或者使用try catch捕获异常

当然find有个findOrEmpty方法, 我就觉得 直接用这个方法返回就行, 干嘛非要来个null? 不解
如果能统一, 像是结果结果获取后的操作很会统一舒服, append/hidden这些, 那如果按现在这样,我还要判断一下是不是null, 如果按select来根本不需要判断数组是不是空

那append/hidden就可以给这个空对象追加/隐藏数据了,但是这个数据在数据库中是不存在的,那别的比如save/delete方法是不是会报错?会导致程序更加容易出现问题的,排查问题起来也非常麻烦

你的思维不要陷入一个死循环好不好? 我在讨论框架逻辑, 你在说业务流程, 你能明白我在说什么吗 在append之前,框架对于空数据就跳过了! select不就这么干的吗?

本身append/each这类方法就是对获取数据之后进行后操作,所以没数据 也就到不了这些方法这里

@axguowen
Copy link

axguowen commented Nov 1, 2023

你需要在业务上使用select代替find方法····

@yuyachong
Copy link
Author

你需要在业务上使用select代替find方法····

好了, 到此为止, 咱俩交流结束, 谈论的不是一个层面

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants