我有一个具有 WebView 和底部导航栏的应用程序。
后退、前进和重新加载按钮可以正常工作,因为有 goForward()、goBack() 和 reload() 方法。
但我也有一个主页按钮,应该加载起始 url。我尝试设置新网址,this.setState但它不起作用。
this.setState({
...this.state,
url: DEFAULT_URL,
})
Run Code Online (Sandbox Code Playgroud)
实际上它第一次起作用。例如,如果我更改源中的 URL 并热重新加载,则它可以工作。但是,如果我单击任何链接,主页将不再起作用。
是否可以这样做,如果可以,我做错了什么?
是否有可能以及在 Yii2 中定义与参数的关系的最佳方法是什么?
情况很简单。我有表格文本和texts_regional。texts_regional当然有外键text_id和lang_id。
Gii 生成了一种获取所有区域文本的方法,但我在前端不需要它。我只需要使用当前的语言。生成方法为:
public function getTextsRegionals()
{
return $this->hasMany(TextRegional::className(), ['text_id' => 'id']);
}
Run Code Online (Sandbox Code Playgroud)
试过了,但可能不对:
public function getReg($langId=null)
{
if($langId === null && Yii::$app->session->has('langId')) {
$langId = Yii::$app->session->get('langId');
}
return $this->hasOne(TextRegional::className(), ['text_id' => 'id', 'lang_id'=>$langId]);
}
Run Code Online (Sandbox Code Playgroud)
我需要来自两个表的数据,所以我想急切地加载它。
使用单独的方法并手动构建查询是否更好?
我有两个模型:User和Images。用户有profile_image_id列。
当我得到用户时,include {model:Images, as:'profileImage', attributes:['filename']}我得到profileImage具有filenameas属性的对象。
Sequelize中是否有办法将“文件名”作为用户模型的属性?执行的意义
SELECT u.id, u.name, i.filename
FROM users u
LEFT JOIN images i ON i.id = u.profile_image_id
WHERE u.id = 1
Run Code Online (Sandbox Code Playgroud)
现在起作用的是在用户上定义VIRTUAL属性profileImageFIlename,然后在afterFind用户模型的功能中填充它。但这似乎是很多额外的工作和不必要的数据。
除了原始查询,还有更好的方法吗?