Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Kullanıcıların internet sitelerini takip etmesini istiyorum.
follow tablomda user_id ve site_id olarak 2 sutunum var takip eklemekte ve takipten çıkarmakta sorunum yok ama ne yaptıysam takip ediyormu kontrolu yapamıyorum. ilgili alanda bir simgem var tıklanınca takip ediyor ama bunu kontrol etmem lazım ki takip ediyorsa kullanıcı için takibi bırak simgemi göstereyim.

  • aghabalaguluzade bunu yanıtladı.
  • Laravel Eloquent ile many-to-many ilişkileri kullanarak bir tablo örneğiyle devam edelim. Birçok kullanıcının birçok siteye erişebileceği bir senaryo düşünelim. Bu ilişkiyi kurmak için iki tabloya ihtiyacınız olacak: users ve sites. Ayrıca bir bağlantı tablosu (user_site) kullanarak bu ilişkiyi kurmalısınız.

    1. users tablosunu oluşturun ve bir kullanıcıyı temsil eden verileri içerir.

    2. sites tablosunu oluşturun ve her bir siteyi temsil eden verileri içerir.

    3. Bağlantı tablosunu (user_site) oluşturun. Bu tablo, kullanıcıların hangi sitelere erişebileceğini belirlemek için kullanılır. Aşağıda, bu tabloyu oluşturmak için bir migration örneği verilmiştir:

    php artisan make:migration create_user_site_table

    Daha sonra oluşturulan migration dosyasını açın ve aşağıdaki gibi düzenleyin:

    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;
    
    class CreateUserSiteTable extends Migration
    {
        public function up()
        {
            Schema::create('user_site', function (Blueprint $table) {
                $table->id();
                $table->unsignedBigInteger('user_id');
                $table->unsignedBigInteger('site_id');
                $table->timestamps();
    
                $table->foreign('user_id')->references('id')->on('users');
                $table->foreign('site_id')->references('id')->on('sites');
            });
        }
    
        public function down()
        {
            Schema::dropIfExists('user_site');
        }
    }

    Bu migration, user_site adlı bağlantı tablosunu oluşturur ve user_id ve site_id sütunlarını ilişkilendirir.

    1. Eloquent modelini oluşturun. İlk olarak User modelini aşağıdaki gibi güncelleyin:
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class User extends Model
    {
        public function sites()
        {
            return $this->belongsToMany(Site::class);
        }
    }

    Sonra Site modelini oluşturun:

    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Site extends Model
    {
        public function users()
        {
            return $this->belongsToMany(User::class);
        }
    }
    1. Artık kullanıcıları ve siteleri ilişkilendirebilirsiniz. Örneğin, belirli bir kullanıcının hangi sitelere erişebileceğini kontrol etmek için şu kodu kullanabilirsiniz:
    $user = User::find(1); // Kullanıcıyı id'ye göre alın
    $sites = $user->sites; // Kullanıcının erişebileceği siteleri alın
    
    foreach ($sites as $site) {
        echo $site->name; // Site adını ekrana yazdırın
    }

    Bu şekilde, many-to-many ilişkileri kullanarak kullanıcıları ve siteleri bağlayabilir ve belirli bir kullanıcının hangi sitelere erişebileceğini kolayca kontrol edebilirsiniz.

    Eğer belirli bir kullanıcının 123 numaralı bir site kaydının olup olmadığını sorgulamak istiyorsanız, Eloquent ile bu sorguyu aşağıdaki gibi yapabilirsiniz:

    $userId = 1; // Kullanıcının ID'sini belirli bir değere ayarlayın
    $siteIdToCheck = 123; // Sorgulanacak site ID'sini belirli bir değere ayarlayın
    
    $user = User::find($userId);
    
    if ($user) {
        // Kullanıcı bulundu
        $siteExists = $user->sites()->where('site_id', $siteIdToCheck)->exists();
    
        if ($siteExists) {
            // Kullanıcının 123 numaralı site kaydı var
            echo "Kullanıcının 123 numaralı site kaydı var.";
        } else {
            // Kullanıcının 123 numaralı site kaydı yok
            echo "Kullanıcının 123 numaralı site kaydı yok.";
        }
    } else {
        // Kullanıcı bulunamadı
        echo "Kullanıcı bulunamadı.";
    }

    Yukarıdaki kod parçası, belirli bir kullanıcının 123 numaralı site kaydının olup olmadığını sorgular. exists() yöntemi, belirli bir koşula sahip kayıtların varlığını kontrol etmek için kullanılır. Eğer kullanıcı bulunursa ve 123 numaralı site kaydı varsa, ilgili mesajlar ekrana yazdırılır. Eğer kullanıcı bulunamazsa da bu durumu kontrol ediyoruz.

    • sineld

      Seviye 441
    • Düzenlendi
    • En İyi Yanıtaeneas tarafından

    Laravel Eloquent ile many-to-many ilişkileri kullanarak bir tablo örneğiyle devam edelim. Birçok kullanıcının birçok siteye erişebileceği bir senaryo düşünelim. Bu ilişkiyi kurmak için iki tabloya ihtiyacınız olacak: users ve sites. Ayrıca bir bağlantı tablosu (user_site) kullanarak bu ilişkiyi kurmalısınız.

    1. users tablosunu oluşturun ve bir kullanıcıyı temsil eden verileri içerir.

    2. sites tablosunu oluşturun ve her bir siteyi temsil eden verileri içerir.

    3. Bağlantı tablosunu (user_site) oluşturun. Bu tablo, kullanıcıların hangi sitelere erişebileceğini belirlemek için kullanılır. Aşağıda, bu tabloyu oluşturmak için bir migration örneği verilmiştir:

    php artisan make:migration create_user_site_table

    Daha sonra oluşturulan migration dosyasını açın ve aşağıdaki gibi düzenleyin:

    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;
    
    class CreateUserSiteTable extends Migration
    {
        public function up()
        {
            Schema::create('user_site', function (Blueprint $table) {
                $table->id();
                $table->unsignedBigInteger('user_id');
                $table->unsignedBigInteger('site_id');
                $table->timestamps();
    
                $table->foreign('user_id')->references('id')->on('users');
                $table->foreign('site_id')->references('id')->on('sites');
            });
        }
    
        public function down()
        {
            Schema::dropIfExists('user_site');
        }
    }

    Bu migration, user_site adlı bağlantı tablosunu oluşturur ve user_id ve site_id sütunlarını ilişkilendirir.

    1. Eloquent modelini oluşturun. İlk olarak User modelini aşağıdaki gibi güncelleyin:
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class User extends Model
    {
        public function sites()
        {
            return $this->belongsToMany(Site::class);
        }
    }

    Sonra Site modelini oluşturun:

    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Site extends Model
    {
        public function users()
        {
            return $this->belongsToMany(User::class);
        }
    }
    1. Artık kullanıcıları ve siteleri ilişkilendirebilirsiniz. Örneğin, belirli bir kullanıcının hangi sitelere erişebileceğini kontrol etmek için şu kodu kullanabilirsiniz:
    $user = User::find(1); // Kullanıcıyı id'ye göre alın
    $sites = $user->sites; // Kullanıcının erişebileceği siteleri alın
    
    foreach ($sites as $site) {
        echo $site->name; // Site adını ekrana yazdırın
    }

    Bu şekilde, many-to-many ilişkileri kullanarak kullanıcıları ve siteleri bağlayabilir ve belirli bir kullanıcının hangi sitelere erişebileceğini kolayca kontrol edebilirsiniz.

    Eğer belirli bir kullanıcının 123 numaralı bir site kaydının olup olmadığını sorgulamak istiyorsanız, Eloquent ile bu sorguyu aşağıdaki gibi yapabilirsiniz:

    $userId = 1; // Kullanıcının ID'sini belirli bir değere ayarlayın
    $siteIdToCheck = 123; // Sorgulanacak site ID'sini belirli bir değere ayarlayın
    
    $user = User::find($userId);
    
    if ($user) {
        // Kullanıcı bulundu
        $siteExists = $user->sites()->where('site_id', $siteIdToCheck)->exists();
    
        if ($siteExists) {
            // Kullanıcının 123 numaralı site kaydı var
            echo "Kullanıcının 123 numaralı site kaydı var.";
        } else {
            // Kullanıcının 123 numaralı site kaydı yok
            echo "Kullanıcının 123 numaralı site kaydı yok.";
        }
    } else {
        // Kullanıcı bulunamadı
        echo "Kullanıcı bulunamadı.";
    }

    Yukarıdaki kod parçası, belirli bir kullanıcının 123 numaralı site kaydının olup olmadığını sorgular. exists() yöntemi, belirli bir koşula sahip kayıtların varlığını kontrol etmek için kullanılır. Eğer kullanıcı bulunursa ve 123 numaralı site kaydı varsa, ilgili mesajlar ekrana yazdırılır. Eğer kullanıcı bulunamazsa da bu durumu kontrol ediyoruz.

    hocam çok teşekkurler cok zahmet verdim. tam istediğim gibi çalıştı.

    Rica ederim, kolay gelsin.