本节我们介绍的是如何将一条App的信息内容完整的显示出来,不带有超链接,将其关联的用户一并显示出来。
接口设计:通过查找获取某个用户的某条ID,然后将ID里面的所有字段内容显示出来,如果关联到其他的ID或者用户,则提供相应的跳转链接。
php项目实战
public function actionDetail()//显示某条主题的详情
{
$id = \Yii::$app->request->get('id');//通过get(显式)方式获取数据id
$fields = ['id','content', 'title', 'cover_pic','user_id', 'like_count', 'read_count', 'is_delete',
'created_at', 'advertiser_id'];//定义fields,用于存储topic数据库中的字段
$query = Topic::find()->select($fields)->where(['id' => $id]);//查询topic中的相应id(get到的id)
$count = $query->count();//对查询到的数据进行统计
$pagination = new Pagination(['totalCount' => $count]);//根据统计结果进行分页
$query->orderBy('created_at desc');//对查询结果以创建时间(create_at)进行降序排序
$data = $query->offset($pagination->offset)->limit($pagination->limit)->asArray()->one();//将查询到的数据以分页的方式保存到$data中
$data["content"] = !empty($data["content"])?json_decode($data["content"],true) : [];//如果$data["content"]的值不为空,则返回使用json解码后的$data["content"],如果为空返回【】
$resArray = [];//定义空数组变量$resArray
foreach ($data["content"] as $key => $value) {
$value["target_info"] = null;
if (isset($value["target_type"]) && isset($value["target_id"])) {
$type = $value["target_type"];
$id = $value["target_id"];
if ($type == 1) { //演员
$actor = Actor::find()->where(["id" => $id])->asArray()->one();
$value["target_info"] = $actor;
} else if ($type == 2) { //通告
$demand = DemandInfo::find()->where(["id" => $id])->asArray()->one();
$value["target_info"] = $demand;
} else if ($type == 3){ //广告主
$ad = Advertiser::find()->where(["id" => $id])->asArray()->one();
$value["target_info"] = $ad;
}
}//如果获取的user_id值为空,同时字段advertiser_id也为空的情况下,则在Topic数据库中查询is_delete=0(没有删除)的数据。
//如果user_id值为空,并且advertiser_id不为空,那么就在topic数据库中查询到is_delete=0,字段'advertiser_id' = $advertiser_id的数据