christiankuri / laravel-favorite Goto Github PK
View Code? Open in Web Editor NEWAllows Laravel Eloquent models to implement a 'favorite', 'like', 'remember' and 'follow' features.
License: MIT License
Allows Laravel Eloquent models to implement a 'favorite', 'like', 'remember' and 'follow' features.
License: MIT License
Hi there!
I get user's favourite models: $user->favorite(Material::class);
But it produces many similar db-queries: https://take.ms/fuKu3
How could I eager load that?
Thanks!
Right now it's not possible to use both provided traits. For example if you want to favorite a user as well.
id
in default favorites table migrationwhen i try to add some model to favorites it generates following query, which requires id
column
SQL: insert into "favorites" ("user_id", "favoriteable_id", "favoriteable_type", "updated_at", "created_at") values (1, 2, App\Models\Institution\Institution, 2021-04-19 06:19:59, 2021-04-19 06:19:59) returning "id"
i dont really realize why and where this is happening, i guess it has something to do with relationtship registration
add id column to default migration, or figure out why eloquent adds requiring "id"
to its query and get rid of it
First of all, this package is realy helpfull! Second how to works with uuid on users model?
When trying to get users favorites $user->favorite(Model:class)
if Model is soft deleted error pops up Trying to get property of non-object
any work around on this? thanks in advanced.
Provide a detailed description of the change or addition you are proposing.
Make it clear if the issue is a bug, an enhancement or just a question.
Why is this change important to you? How would you use it?
How can it benefit other users?
Not obligatory, but suggest an idea for implementing addition or change.
Include as many relevant details about the environment you experienced the bug in and how to reproduce it.
How can the user->favorite() function get me an array of the favoriteable items? thank you!
I'm getting a collection with the favoriteable id as an index and didn't know how to change it :"(
Any chance of creating a custom Favorite model and extending the original?
Thanks!
I have installed your package and added $user = User::first(); $user->toggleFavorite($article); in the articleshow method.
How to create a icon in the view blade file so that when a user clicks on it the logged in user is added to favorites count of the post and when the user clicks it again, he is removed from the favorites count of that article.
I see that there are $user->addFavorite($article); and $user->removeFavorite($article); But how to use them in the controller to gain the functionality i mentioned
I am trying to show the different colors for liked and non-liked users on the view file.
I am using laravel 7, how to use $post->isFavorited()
on laravel view file, with if-else
statement...
$user->favorite(Post::class) always return one item array
``
This is how my controller code looks like
public function index()
{
$userid = Auth::user()->id;
$user = Auth::user();
$favoritevideos = $user->favorite(Video::class);
$videos = Video::where('created_by', $userid)->latest()->paginate(12);
return view('backend.videos.index', compact('videos', 'favoritevideos'));
}
And in my view when i do this
@forelse ($favoritearticles as $article)
<div class="col-md-4">
<div class="item r-t">
<div class="item-media item-media-16by9">
<a href="{{ url('articles/'.$article->category->slug.'/'.$article->slug) }}" class="item-media-content" style="background-image: url({{ asset('uploads/articles/'.$article->image) }})"></a>
</div>
<div class="item-overlay active top p-3">
<a href="{{ url('articles/'.$article->category->slug) }}" class="text-u-c badge">{{ $article->category->name }}</a>
</div>
</div>
<div class="p-2 border">
<div class="mb-2 h-2x">
<a href="{{ url('articles/'.$article->category->slug.'/'.$article->slug) }}" class="_800">{{ $article->title }}</a>
</div>
<span class="mr-2"><i class="fa fa-eye"></i> {{ $article->getPageViews() }} views</span> <a href="#" class="mr-2"><i class="fa fa-heart-o"></i> {{ $article->favoritesCount }}</a> likes
</div>
</div>
@empty
<div class="padding">
<span>You have not liked any articles.</span>
</div>
@endforelse
I see the error
Trying to get property of non-object (View: D:\xampp\htdocs\2018\project\resources\views\backend\articles\index.blade.php)
All the tables are currently empty. When i add an article and favorite it via tinker the error is gone. When i move the project to the live production server initially the project would be empty and it would show error to my client. How to solve this?
Environment : Localhost XAMPP
Laravel 5.6
Php 7.1
Windows 7
It worked on last version, but since I upgraded Laravel to 5.8 I have this error when I try to get a collection of users that have "favorited" an item.
My Favoriteable model is links (user can favourite any link of the application).
My (very simple) Links model:
class Links extends Model
{
use Favoriteable;
}
My Users model:
class User extends Authenticatable
{
use Favoriteability;
[...]
}
In a test controller, I want to
$link = Links::findOrFail(22);
$users = $link->favoritedBy();
Yes link 22 does exist in database :) The error is on $link->favoritedBy();
then on
public function favoritedBy()
{
return $this->favorites()->with('user')->get()->mapWithKeys(function ($item) {
return [$item['user']->id => $item['user']];
});
}
The following are working correctly:
$link = Links::findOrFail($id);
$favoriteCount = $link->favoritesCount;
Will generate select count(*) as aggregate from [favorites] where [favorites].[favoriteable_id] = 22 and [favorites].[favoriteable_id] is not null and [favorites].[favoriteable_type] = 'App\Models\Users\Links'
as expected
$link = Links::findOrFail($request->input('link_id'));
$link->toggleFavorite();
Will generate select top 1 1 [exists] from [favorites] where [favorites].[favoriteable_id] = 22 and [favorites].[favoriteable_id] is not null and [favorites].[favoriteable_type] = 'App\Models\Users\Links' and [user_id] = 84
and insert into [favorites] ([user_id], [favoriteable_id], [favoriteable_type], [updated_at], [created_at]) values (84, 22, 'App\Models\Users\Links', '2019-03-19 16:41:19.984', '2019-03-19 16:41:19.984')
as expected (same for removing)
name : christiankuri/laravel-favorite
descrip. : Allows Laravel Eloquent models to implement a 'favorite' or 'remember' or 'follow' feature.
keywords : ChristianKuri, Follow, favoritable, favorite, favourite, laravel, laravel-favorite, package, remember
versions : * v1.3.0
type : library
license : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
source : [git] https://github.com/ChristianKuri/laravel-favorite.git a6e519934711c4261ed546426e288432aed26422
dist : [zip] https://api.github.com/repos/ChristianKuri/laravel-favorite/zipball/a6e519934711c4261ed546426e288432aed26422 a6e519934711c4261ed546426e288432aed26422
names : christiankuri/laravel-favorite
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
Please help me :)
how can people who are not signed in add favorit list
I was trying to get the favorite items of a user when I noticed that no results are shown if the query is performed from blade or livewire. How can we call the method favorite() globally?
Use this method in Blade or with Laravel Livewire
Could be used like as a Helper function(?)
Include as many relevant details about the environment you experienced the bug in and how to reproduce it.
#I Change it , is that ok?
`
return $this->hasMany(Favorite::class, 'user_id');
`
My User Model: App\Member and primatekey is uid
$user->favorite(Model::class);
Why is column ID missing in migration?
can you return favorites of a model with a relationship attached?
aka, $user->favorite(Post::class); with('comments')?
Hi there!
When i check if article is favorited by auth user
$article->isFavorited()
the debugbar gives me
Model: App\Models\Article => Relation: ChristianKuri\LaravelFavorite\Models\Favorite - You should add with(ChristianKuri\LaravelFavorite\Models\Favorite) to eager-load this relation.
wire controller
/**
* The read function.
* @return array
*/
public function read(): array
{
return [
'articles' => Article::search($this->search)
->with('user')
->where('status', true)
->latest()
->paginate($this->perPage),
];
}
public function render()
{
return view('livewire.front.article-wire', $this->read())->layout('layouts.app');
}
In Article model i tried
protected $with = ['favorites'];
but it didn't work
How could I eager load that?
Thanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.