Nasıl CakePHP'de bir Unary derneği oluşturabilirim?

3 Cevap php

Kek Tekli ilişkilendirmeleri oluşturmak için bir kısayol var mı?

Örneğin, bir kullanıcı başka bir kullanıcının bir arkadaşım. Ben bunu zor yoldan denemek ve dernekler kendimi kod eğer cake sözleşmelerini ihlal edecek eminim.

Kek habtm vardır:

var $hasAndBelongsToMany = array(
	'User' =>
		array(
			'className' => 'User',
			'joinTable' => 'friends',
			'foreignKey' => 'user_id',
			'associationForeignKey' => 'friend_id',
			'unique' => true
		)
);

Bu çalışır mı? Başka bir kullanıcı modeli bir kullanıcı modeli doç.

Update: How do I save the data now?

$this->data["Friend"] = $request["Requester"];
$this->data["Admirer"] = $request["Requestee"]; 						
$this->Friend->create();
$this->Friend->save($this->data);

$request["Requester"] and $request["Requestee"] both hold objects of type User. The HABTM rel is defined in the User model

var $hasAndBelongsToMany = array(
    	'Friend' => array(
    		'className' => 'Friend',
    		'joinTable' => 'friends',
    		'foreignKey' => 'user_id',
    		'associationForeignKey' => 'id'
    	),
    	'Admirer'=>array(
            'className'=>'Friend',
            'joinTable'=>'friends',
    		'foreignKey' => 'friend_id',
            'associationForeignKey' => 'id',            
        )
    );

Olur ki tüm $ data-> ["Arkadaş"] 'in id arkadaşlar tablonun id sütunda depolanan olduğunu

3 Cevap

İşte bir örnek uygulamada kullanmak bir çözümdür

Iki tablo, kullanıcıları ve takipçileri ihtiyaç vardır. Önemli alanlar User-> id, Takipçi-> User_id, Takipçi-> friend_id vardır.

Ben bu pasajı yardımcı olur umarım.

<?php
class User extends AppModel {
    public $useTable='users';
    public $hasAndBelongsToMany=array(
        'Friend'=>array(
            'className'=>'User',
            'joinTable'=>'followers',
            'foreignKey' => 'user_id',
            'associationForeignKey' => 'friend_id',
            ),
        'Admirer'=>array(
            'className'=>'User',
            'joinTable'=>'followers',
            'associationForeignKey' => 'friend_id',
            'foreignKey' => 'user_id',
            ),
        );
}

-Teh

Bjorn,

o Kullanıcı habtm Kullanıcı soruyor ...

Lütfen katılmak masa users_users olmalı ve ilişki bu gibi görünmelidir

    var $hasAndBelongsToMany = array(
        'Friend' =>
                array(
                        'className' => 'UserUser',
                        'joinTable' => 'users_users',
                        'foreignKey' => 'user_id',
                        'associationForeignKey' => 'friend_id',
                        'unique' => true
                )
);

ben bu hile yapmak gerektiğini düşünüyorum

CakePHP $ hasMany, $ belongsTo ve $ hasAndBelongsToMany gibi bunu yapmak için mevcut modeliniz çeşitli değişkenler vardır. Daha açıklaması Cookbook okuyunuz .. http://book.cakephp.org/view/78/Associations-Linking-Models-Together.

Sizin örnekte, sana habtm gerek.