我有两张桌子,用户和照片。这些表具有多对多关系,我创建了一个pivot表名user_pictures。
用户表如下:

id
firstname
lastname

图片表如下:
id
filename
url

用户图片表包含:
id
user_id
picture_id

当用户添加图片时,图片文件名和url存储在pictures表中,而在user_pictures表中,该图片的picture_id与该用户的user_id一起存储。
如何检索与使用雄辩的ORM添加图片的用户相关的所有图片文件名和url?

最佳答案

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $table = 'users';
    // Define pictures with a pivot table link
    public function pictures() {
        return $this->belongsToMany('App\Models\UserPicture', 'user_pictures', 'picture_id', 'user_id');
    }
    //add methods
}

class UserPicture extends Model
{
    protected $table = 'user_pictures';
    public function picture() {
        return $this->hasOne('App\Models\Picture', 'id', 'picture_id');
    }

    public function user() {
        return $this->hasOne('App\Models\User', 'id', 'user_id');
    }
    //add methods
}

class Pictures extends Model
{
    protected $table = 'pictures';
    //add methods
}

如果不想向表中添加时间戳,则必须添加以下两种方法:
 public function setCreatedAt($value) {
        // to disable created_at
    }

    public function setUpdatedAt($value) {
        // to disable created_at
    }

要从用户获取图片,请执行以下操作:
$userPictures = UserPicture::where(array('user_id'=>1)->get();
foreach($userPictures as $userpicture) {
    $picture = $userpicture->picture();
}

关于php - Laravel-多对多关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32991941/

10-10 16:41