Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Laravel 3 टेबल्स के साथ जुड़ें

मेरा मानना ​​है कि आपका शामिल होना गलत है:

$shares = DB::table('shares')
    ->join('users', 'users.id', '=', 'shares.user_id')
    ->join('followers', 'followers.user_id', '=', 'users.id')
    ->where('followers.follower_id', '=', 3)
    ->get();

मेरा यह भी सुझाव है कि आप अपनी तालिका को follows . नाम दें इसके बजाय, यह कहना थोड़ा अधिक स्वाभाविक लगता है कि user has many followers through follows और user has many followees through follows

उदाहरण

$shares = DB::table('shares')
    ->join('users', 'users.id', '=', 'shares.user_id')
    ->join('follows', 'follows.user_id', '=', 'users.id')
    ->where('follows.follower_id', '=', 3)
    ->get();

मॉडल दृष्टिकोण

मुझे नहीं पता था कि आप DB:: . का उपयोग कर रहे हैं प्रश्न और मॉडल नहीं। इसलिए मैं उत्तर को ठीक कर रहा हूं और बहुत अधिक स्पष्टता प्रदान कर रहा हूं। मेरा सुझाव है कि आप मॉडल का उपयोग करें, यह उन लोगों के लिए बहुत आसान है जो फ्रेमवर्क और विशेष रूप से SQL से शुरू करते हैं।

मॉडल का उदाहरण:

class User extends Model {
    public function shares() {
        return $this->hasMany('Share');
    }
    public function followers() {
        return $this->belongsToMany('User', 'follows', 'user_id', 'follower_id');
    }
    public function followees() {
        return $this->belongsToMany('User', 'follows', 'follower_id', 'user_id');
    }
}
class Share extends Model {
    public function user() {
        return $this->belongsTo('User');
    }
}

मॉडल उपयोग का उदाहरण:

$my = User::find('my_id');

// Retrieves all shares by users that I follow
// eager loading the "owner" of the share
$shares = Share::with('user')
    ->join('follows', 'follows.user_id', '=', 'shares.user_id')
    ->where('follows.follower_id', '=', $my->id)
    ->get('shares.*'); // Notice the shares.* here

// prints the username of the person who shared something
foreach ($shares as $share) {
    echo $share->user->username;
}

// Retrieves all users I'm following
$my->followees;

// Retrieves all users that follows me
$my->followers;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. इको के बाद PHP में एक्सेल फाइल को आउटपुट करें

  2. सबमिशन फॉर्म एक ही पेज पर नहीं रहेगा

  3. java.sql.SQLException पैरामीटर सूचकांक सीमा से बाहर है (1> मापदंडों की संख्या, जो 0 है)

  4. MyIsam इंजन लेनदेन समर्थन

  5. phpMyAdmin ('एक्सेस अस्वीकृत डेटाबेस बनाएं db_name' त्रुटि) के माध्यम से डेटाबेस को आयात और निर्यात कैसे करें