问题描述
我制作了一个package for searching models with JSON input,其中有一个 data(){
return {
mainStr: "Hello,my name is Eldar and I'm web-developer",showStr: ''
}
},methods:{
showString() {
for (let i = 0; i < this.mainStr.length; ++i) {
this.delay(i);
}
},delay(i){
function delay() {
setTimeout(() => {
this.showStr += this.mainStr.charat(i)
},2000)
}
}
},mounted(){
this.showString();
}
宏在雄辩模型中公开。
在尝试包装查询时,我注意到一种奇怪的行为,因此我想知道自己是否做错了事。
例如,像这样加载关系:
search
在所有模型中加载关系,结果看起来都很好。
将其包装在附加的Builder::macro('search',function () {
return $this->with('someRelation');
});
子句中将导致它仅加载模型,而没有任何关联:
where
为什么这行不通?包裹在外部Builder::macro('search',function (array $input) {
return $this->where(function (Builder $builder) {
$builder->with('someRelation');
});
});
中时,如何使其具有负载关系?
解决方法
我无法解释为什么它不起作用的细节,但我想以下两个选项之一可以解决它:
Builder::macro('search',function (array $input) {
return $this->where(function (Builder $builder) {
return $builder->with('someRelation'); // note added 'return'
});
});
或
Builder::macro('search',function (array $input) {
return $this->where(function (Builder $builder) {
// return whatever
})->with('someRelation');
});