-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Closed
Description
Laravel version: 5.4.15
Laravel-mongodb version: 3.2.2
Issue
I've found with BelongsToMany
relations calling the function Jenssegers\Mongodb\Eloquent\Model::has
can throw an ErrorException
with 'Array to string conversion'.
File: app/Http/Controllers/CategoriesController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\Categories\Food;
class CategoriesController extends Controller
{
/**
* Returns a list of all the food categories for users to chose from.
*
* @return Illuminate\Http\Response
*/
public function getFoodCategories()
{
$categories = Food::has('venues')->get();
return response()->json($categories);
}
File: app/Models/Categories/Food.php
<?php
namespace App\Models\Categories;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Food extends Eloquent
{
/**
* The database collection used by the model.
*
* @var string
*/
protected $collection = 'food_categories';
/**
* Adds a relationship between this and \App\Models\Venue.
*
* @return \Jenssegers\Mongodb\Relations\BelongsToMany
*/
public function venues()
{
return $this->belongsToMany(\App\Models\Venue::class);
}
}
File app/Models/Venue.php
<?php
namespace Genii\Models;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Venue extends Eloquent
{
/**
* The database collection used by the model.
*
* @var string
*/
protected $collection = 'venues';
/**
* Adds a relationship between this and \App\Models\Categories\Food.
*
* @return \Jenssegers\Mongodb\Relations\BelongsToMany
*/
public function foodCategories()
{
return $this->belongsToMany(\App\Models\Categories\Food::class);
}
}
Exception
[2017-03-18 20:48:21] local.ERROR: ErrorException: Array to string conversion in /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Eloquent/Builder.php:153
Stack trace:
#0 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Eloquent/Builder.php(153): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Array to string...', '/Users/b-argo/D...', 153, Array)
#1 [internal function]: Jenssegers\Mongodb\Eloquent\Builder->Jenssegers\Mongodb\Eloquent\{closure}(Array)
#2 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Eloquent/Builder.php(154): array_map(Object(Closure), Array)
#3 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php(51): Jenssegers\Mongodb\Eloquent\Builder->addHasWhere(Object(Jenssegers\Mongodb\Eloquent\Builder), Object(Jenssegers\Mongodb\Relations\BelongsToMany), '>=', 1, 'and')
#4 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1316): Illuminate\Database\Eloquent\Builder->has(Object(Jenssegers\Mongodb\Relations\BelongsToMany))
#5 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Eloquent/Model.php(418): Illuminate\Database\Eloquent\Model->__call('has', Array)
#6 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1328): Jenssegers\Mongodb\Eloquent\Model->__call('has', Array)
#7 /Users/b-argo/Dropbox/Projects/majic-lamp/app/Http/Controllers/CategoriesController.php(25): Illuminate\Database\Eloquent\Model::__callStatic('has', Array)
#8 [internal function]: Genii\Http\Controllers\CategoriesController->getFoodCategories()
#9 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(55): call_user_func_array(Array, Array)
#10 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction('getFoodCategori...', Array)
#11 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Route.php(203): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Genii\Http\Controllers\Directory\CategoriesController), 'getFoodCategori...')
#12 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Route.php(160): Illuminate\Routing\Route->runController()
#13 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Router.php(559): Illuminate\Routing\Route->run()
#14 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#15 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#16 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#17 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#18 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#19 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Routing\Middleware\ThrottleRequests->handle(Object(Illuminate\Http\Request), Object(Closure), '60', '1')
#20 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#21 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#22 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Router.php(561): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#23 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Router.php(520): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#24 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Router.php(498): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#25 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(174): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#26 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#27 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#28 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#29 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#30 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#31 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(149): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#32 /Users/b-argo/Dropbox/Projects/majic-lamp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#33 /Users/b-argo/Dropbox/Projects/majic-lamp/public/index.php(51): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#34 /Users/b-argo/.composer/vendor/laravel/valet/server.php(128): require('/Users/b-argo/D...')
#35 {main}
Metadata
Metadata
Assignees
Labels
No labels