在Yii框架中,管理用户好友关系可以通过创建一个专门的关系模型来实现。这个模型将用于存储用户之间的好友关系。以下是实现这一功能的步骤:
Friendship
,用于表示用户之间的好友关系。这个模型应该包含两个字段,分别表示两个用户ID。// models/Friendship.php
namespace app\models;
use yii\db\ActiveRecord;
class Friendship extends ActiveRecord
{
public static function tableName()
{
return 'friendship';
}
public function getUser1()
{
return $this->hasOne(User::className(), ['id' => 'user_id_1']);
}
public function getUser2()
{
return $this->hasOne(User::className(), ['id' => 'user_id_2']);
}
}
添加关联方法:在上面的模型中,我们添加了getUser1()
和getUser2()
方法,用于获取与当前记录相关联的两个用户。
创建控制器和视图:接下来,你需要创建一个控制器来处理好友关系的操作,例如添加好友、删除好友等。同时,你还需要创建相应的视图来展示用户的好友列表。
实现添加好友功能:在控制器中,你可以实现一个方法来处理添加好友的请求。这个方法应该接收两个参数,分别表示要添加为好友的用户ID。然后,你可以创建一个新的Friendship
记录来存储这种关系。
// controllers/FriendshipController.php
namespace app\controllers;
use app\models\Friendship;
use yii\web\Controller;
class FriendshipController extends Controller
{
public function actionAdd($userId1, $userId2)
{
// 检查用户是否已经互为好友
if (!$this->isFriend($userId1, $userId2)) {
// 创建新的好友关系记录
$friendship = new Friendship();
$friendship->user_id_1 = $userId1;
$friendship->user_id_2 = $userId2;
$friendship->save();
// 如果需要,还可以添加一条记录,表示另一个用户也添加了当前用户为好友
$friendship2 = new Friendship();
$friendship2->user_id_1 = $userId2;
$friendship2->user_id_2 = $userId1;
$friendship2->save();
}
return $this->redirect(['index']);
}
private function isFriend($userId1, $userId2)
{
return Friendship::find()->where(['user_id_1' => $userId1, 'user_id_2' => $userId2])->exists() ||
Friendship::find()->where(['user_id_1' => $userId2, 'user_id_2' => $userId1])->exists();
}
}
GridView
小部件来显示好友列表,并使用ActionColumn
小部件来添加添加好友的按钮。// views/friendship/index.php
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'id',
'user_id_1',
'user_id_2',
[
'class' => 'yii\grid\ActionColumn',
'template' => '{view} {update} {delete}',
'buttons' => [
'add' => function ($url, $model, $key) {
return Html::a('<span class="glyphicon glyphicon-plus"></span>', ['add', 'userId1' => $model->user_id_1, 'userId2' => $model->user_id_2], [
'title' => Yii::t('yii', 'Add Friend'),
]);
},
],
],
],
]); ?>
通过以上步骤,你就可以在Yii框架中管理用户好友关系了。当然,这只是一个简单的示例,你可以根据实际需求进行扩展和优化。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。