@sineld öncelikle ilginiz için teşekkür ederim,
bahsettiğimiz gibi morph ile ilgili yapıyı kurdum ve increment ile kaçkez ziyaret edildiğini kayıt ettirdim.
Kod tekrarı olmaması ve controller tarafında kalabalık yaratmamak için observer (retrieve) ile halledeyim dedim.
Fakat kullanıcı @show methoduna gelmedenden @index metodunu incelerkende doğal olarak observer@retrive çalıştığından tam olarak istediğim gibi çalışmadı bunu sadece show üstünde birden fazla controller/model üstündede kullanabileceğim bir yapıya sokabileceğim bir yapıya nasıl oturatabilirim acaba ?
migration
public function up()
{
Schema::create('view_counts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('user_id');
$table->bigInteger('count')->default(0);
$table->morphs('viewable');
$table->timestamps();
});
}
ViewableTrait
namespace App\Traits;
trait Viewable
{
public function viwed()
{
return $this->morphMany('App\ViewCount', 'viewable')->with('user');
}
public function viewable()
{
return $this->morphTo();
}
}
Observer
namespace App\Observers;
use App\Models\Quotes\Quote;
class VisibilityObserver
{
public function retrieved(Quote $quote)
{
$quote->viwed()->updateOrCreate([
'user_id'=> auth()->user()->id,
])->increment('count');
}
}