Closed jcsoriano closed 7 years ago
isNotTagged()
uses code from my package, whereas doesntHave('tags')
uses code built in to Eloquent. The end result should be identical, although the SQL isn't very well optimized when you use doesntHave()
. If you have a lot of models and/or a lot of tags, you will notice this.
That said, I can't seem to reproduce your issue. In fact, I have a test for isNotTagged()
that seems to pass just fine and doesn't throw the exception you noted.
If possible, could you fork the repo, and write another test method in tests/ScopeTests.php
that fails? I can take it from there.
Still digging into it, but I upgraded one of my sites to 5.5 and am seeing the same problem when using Model::withAnyTags() and Model::withAllTags()
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'App\Models\Article' in 'on clause' (SQL: select 'archive_articles'.* from 'archive_articles' inner join 'taggable_taggables' on 'archive_articles'.'article_id' = 'taggable_taggables'.'taggable_id' and 'taggable_taggables'.'taggable_type' = 'App\Models\Article' where 'taggable_taggables'.'tag_id' in (1) group by 'archive_articles'.'article_id')
I think I figured it out. Can you check the dev-refactor-sql
version and let me know if that fixes it?
That did the job. Thanks!
Thanks! I'll push a new version out shortly.
3.1.2 for Laravel 5.4, and 3.2.2. for Laravel 5.5. Thanks for the help!
Hi! Thank you for the wonderful package. Makes working with tags very easy to do. However, I'm having a problem with the scopes.
Environment
Eloquent-Taggable version: 3.0.0 Laravel version: 5.4.35 PHP version: 7.0.9 MySQL version: 5.7.14
Description
When I call
isNotTagged()
scope, I getQueryException
becausestatic::class
is wrongly escaped. See the error message:Stack Trace:
Steps to Reproduce:
[Model]::isNotTagged()->get();
[EDIT] Workaround:
[Model]::doesntHave('tags')->get();
What is the advantage of
isNotTagged()
vsdoesntHave('tags')
? (https://laravel.com/docs/5.4/eloquent-relationships#querying-relations)