Example #1
0
 /**
  * Allow custom where method calls on the builder.
  *
  * @codeCoverageIgnore
  *
  * @param  \Sofa\Eloquence\Builder  $query
  * @param  string  $method
  * @param  \Sofa\Eloquence\ArgumentBag  $args
  * @return \Sofa\Eloquence\Builder
  */
 public function queryHook(Builder $query, $method, ArgumentBag $args)
 {
     $this->unwrapHooks(__FUNCTION__);
     $pipes = $this->unwrappedHooks[__FUNCTION__];
     return (new Pipeline($pipes))->send($query)->with(new ArgumentBag(['method' => $method, 'args' => $args]))->to(function ($query) use($method, $args) {
         return call_user_func_array([$query, 'callParent'], [$method, $args->all()]);
     });
 }
Example #2
0
 /**
  * Get the relation constraint closure.
  *
  * @param  string $method
  * @param  \Sofa\Eloquence\ArgumentBag $args
  * @return \Closure
  */
 protected function getMappedWhereConstraint($method, ArgumentBag $args)
 {
     return function ($query) use($method, $args) {
         call_user_func_array([$query, $method], $args->all());
     };
 }
Example #3
0
 /**
  * Get the relation constraint closure.
  *
  * @param  string $method
  * @param  \Sofa\Eloquence\ArgumentBag $args
  * @return \Closure
  */
 protected function getMetaWhereConstraint($method, ArgumentBag $args)
 {
     $column = $args->get('column');
     $args->set('column', 'meta_value');
     if ($method === 'whereBetween') {
         return $this->getMetaBetweenConstraint($column, $args->get('values'));
     }
     return function ($query) use($column, $method, $args) {
         $query->where('meta_key', $column);
         if ($args->get('value') || $args->get('values')) {
             call_user_func_array([$query, $method], $args->all());
         }
     };
 }