我正在使用CakePHP 3.x.
我想要的是能够调用$ this-> Categories-> find()然后加入Topics.cat_id = Categories.id上的主题,然后加入Posts.topic_id = Topics.id上的帖子.
我没有得到任何错误,但我收到的唯一数据是类别数据,我尝试过LEFT和INNER加入但没有成功.任何帮助将不胜感激.
表关系是:
CategoriesTable
$this->hasMany('Topics');
Run Code Online (Sandbox Code Playgroud)
TopicsTable
$this->belongsTo('Categories');
$this->hasMany('Posts');
Run Code Online (Sandbox Code Playgroud)
PostsTable
$this->belongsTo('Topics');
Run Code Online (Sandbox Code Playgroud)
还有我的查询:
$query = $this->Categories->find('all')
->order(['Categories.name' => 'ASC'])
->join([
'topics' => [
'table' => 'Topics',
'type' => 'LEFT',
'conditions' => 'topics.Cat_id = Categories.id'
],
'posts' => [
'table' => 'Posts',
'type' => 'LEFT',
'conditions' => 'posts.topic_id = topics.id'
]
]);
Run Code Online (Sandbox Code Playgroud)
尝试使用可包含的行为但现在我使用此查询得到错误"类别与帖子无关":
$query = $this->Categories->find('all')
->order(['Categories.name' => 'ASC'])
->contain(['Topics', 'Posts' => function($q){
return $q->where(['Posts.topic_id' => 'Topics.id']);
}]);
Run Code Online (Sandbox Code Playgroud) 我无法.trigger("change")上班.谁知道为什么?
jQuery(document).ready(function () {
jQuery("select[id='DROPDOWNID']").change(function () {
var selectedIndex = jQuery("select[id='DROPDOWNID']").prop('selectedIndex');
switch (selectedIndex) {
case 0:
hideVarforProspekt();
break;
case 1:
hideOrdervarde();
break;
case 2:
break;
case 3:
hideSektor();
break;
}
});
** jQuery("select[id='DROPDOWNID']").trigger("change"); **
function hideVarforProspekt() {
jQuery("input[id='IDFROMSHAREPOINT']").closest('tr').hide();
}
function hideSektor() {
jQuery("table[id='IDFROMSHAREPOINT']").closest('tr').hide();
}
function hideUppskOrder() {
jQuery("input[id='IDFROMSHAREPOINT']").closest('tr').hide();
}
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PHP的ssh2函数连接到另一台机器.我知道ssh密钥是在没有密码的情况下创建的并且分发正确,我可以ssh user@host在我的机器终端上发送到服务器.
PHP函数尝试使用ssh密钥文件连接到ip地址: -
function minnerConnect($miner_serial) {
$port = '7822';
$miner_ip = $this->getMinerIp($miner_serial);
$methods = array(
'kex' => 'diffie-hellman-group1-sha1',
'hostkey' => 'ssh-dss',
'client_to_server' => array(
'crypt' => '3des-cbc',
'mac' => 'hmac-md5',
'comp' => 'none'),
'server_to_client' => array(
'crypt' => '3des-cbc',
'mac' => 'hmac-md5',
'comp' => 'none'));
$connection = ssh2_connect($miner_ip, $port, $methods);
if (ssh2_auth_pubkey_file($connection, 'root',
'/root/.ssh/id_dsa.pub',
'/root/.ssh/id_dsa','')) {
echo "Public Key Authentication Successful\n";
} else {
echo "Public Key Authentication Failed";
}
Run Code Online (Sandbox Code Playgroud)
但显示的错误是: -
(!)警告:ssh2_auth_pubkey_file():使用公钥的root身份验证失败:第95行/var/www/application/models/miner_model.php中的回调错误
第95行是'/root/.ssh/id_dsa','')) {. …
想知道是否有人在PHP的preg_match函数中使用时可以解释为什么以下正则表达式失败: -
<?php
$str = '\tmp\phpDC1C.tmp';
preg_match('|\\tmp\\([A-Za-z0-9]+)|', $str, $matches);
print_r($matches);
?>
Run Code Online (Sandbox Code Playgroud)
这导致错误消息"preg_match():编译失败:不匹配的括号",尽管该模式似乎是有效的.我用在线PHP Regular Expression测试器和Linux工具Kiki 测试了它.似乎PHP正在逃避左括号而不是反斜杠.
我已经通过使用str_replace交换前向的反斜杠来解决这个问题.这适用于我的情况但是很高兴知道为什么这个正则表达式失败了.
在CakePHP 2.0中,我实际上可以将'before','after'和'separator'属性添加到单选按钮.这些属性将在我的无线电选项之间创建一个div元素.看起来这些选项已从CakePHP 3.0中删除.我怎么能在CakePHP 3.0中做到这一点?
<div class="col-xs-6 col-sm-6 col-md-6 col-lg-6">
<div class="square-screening single-row screen-radio">
<?php echo $this->Form->input('q1',array(
'legend'=> false,
'type'=>'radio',
'options'=> $options,
'required'=>'required',
'before' => '<div class="radio-inline screen-center screen-radio">',
'separator' => '</div><div class="radio-inline screen-center screen-radio">',
'after' => '</div>',
)); ?>
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 我正在开发一个 CakePHP 2.x 插件,它使用 Composer 来引入包依赖项。我现在尝试使用 Friends of Cake 的Travis 包在插件存储库更新时自动运行我的单元测试。
据我所知,这不包括加载到我的供应商文件中所需的 Composer 自动加载文件。结果我的测试失败了,因为第三方包中定义的类丢失了。
如CakePHP 2 的高级安装中所述,我正在尝试将以下内容添加到bootstrap.php:-
require APP . 'Vendor' . DS . 'autoload.php';
Run Code Online (Sandbox Code Playgroud)
我试图通过before_script我的.travis.yml文件追加来做到这一点bootstrap.php:-
before_script:
- git clone https://github.com/FriendsOfCake/travis.git --depth 1 ../travis
- ../travis/before_script.sh
- echo "require APP . 'Vendor' . DS . 'autoload.php';" >> ../cakephp/app/Config/bootstrap.php
Run Code Online (Sandbox Code Playgroud)
不幸的是,这失败了,因为APP . 'Vendor' . DS . 'autoload.php'找不到文件。(我也尝试在 中查找文件APP . '..' . DS . 'Vendor' . DS . …
如何从节点编辑表单上的菜单设置中删除"导航"菜单(和其他)?我怀疑这可以使用类似module_form_alter的钩子以某种方式实现,但我不确定如何实现它.这样做的动机是消除当标准主链接菜单以外的菜单在下拉菜单中时用户的困惑.目的是将选项限制为他们需要/想要发布内容的菜单.
这个问题部分与我之前提到的关于Domain Access的问题有关,我之前还没有解决过.
我正在尝试确保当我的应用程序处于生产模式时,CakePHP会写入自定义日志文件.
我正在使用日志方法写入日志: -
$this->log($url, 'payment');
Run Code Online (Sandbox Code Playgroud)
当我处于开发模式时,这项工作很好,但当我切换到生产模式时,它不再写入文件(这是我想要它做的).
我已经尝试在bootstrap.php中配置文件记录选项,这部分解决了这个问题: -
CakeLog::levels(array('payment'));
CakeLog::config('payment', array(
'engine' => 'FileLog',
'types' => array('payment'),
'file' => 'payment',
));
Run Code Online (Sandbox Code Playgroud)
这现在以生产模式写入日志文件,但它也将其他错误写入我的payment.log,我不想在那里.
我试过阅读文档,但要么它没有解释如何实现这一点,要么我误解了它.
我究竟做错了什么?谢谢你的帮助.
class Batch extends Eloquent {
public function coupons() {
return $this->hasMany('Coupon');
}
}
class Coupon extends Eloquent {
public function batch() {
return $this->belongsTo('Batch');
}
public function price() {
$batch = $this->batch;
return $batch->price;
}
}
Run Code Online (Sandbox Code Playgroud)
$coupon->price 给我这个错误:
LogicException Relationship方法必须返回类型为Illuminate \ Database \ Eloquent \ Relations \ Relation的对象
但是,$coupon->batch->price工作正常。
我想念什么?
我需要为不同的用户角色设置不同的"创建内容"权限.仅当特定角色未获得"管理节点"权限时,这似乎才有效.但是,如果没有此权限,该角色将无权控制是否发布节点(我需要)或查看内容管理表(主页>管理>内容管理).
例如,我希望用户角色能够创建新的新闻项并能够发布/取消发布,但不能创建新页面(但能够编辑现有页面).
有没有人知道这方面的方法?或者应该设置哪些权限?
我正在使用 CakePHP 2.6.7。我想获得以下网址:
www.mydomain.com/OrderFromReseller/82BC1562-22F9-4326-8B4B-370129710E8C
我尝试如下:
$resellerURL = $this->webroot . 'OrderFromReseller/' . $this->request->data['Reseller']['api_key'];
Run Code Online (Sandbox Code Playgroud)
但是当我 echo$resellerURL它的值echos http://orderfromreseller/82BC1562-22F9-4326-8B4B-370129710E8C。
有没有其他方法$this->webroot可以在 cakephp 中正确获取基本 url?
我的观点是这样的:
<li id="thumbnail-view" class="count-photo">
<div class="thumbnail">
<img src="{{ asset('img/thumbs/'.$photo) }}" alt="">
<a href="javascript:" class="thumbnail-check"><span class="fa fa-check-circle"></span></a>
<ul class="list-inline list-edit">
...
</ul>
</div>
</li>
Run Code Online (Sandbox Code Playgroud)
我的javascript是这样的:
var photo = 'flower.jpg';
var res = `<img src="{{ asset('img/thumbs/'+photo) }}" alt="">`
$('#thumbnail-view img').html(res);
Run Code Online (Sandbox Code Playgroud)
如果执行了javascript代码,我想更改图像
我尝试这样,但它不起作用
我该怎么做?
cakephp ×5
php ×5
cakephp-3.0 ×2
drupal ×2
drupal-6 ×2
javascript ×2
jquery ×2
cakephp-2.1 ×1
cakephp-2.6 ×1
cakephp-2.x ×1
composer-php ×1
dsa ×1
html ×1
join ×1
laravel ×1
laravel-4 ×1
logging ×1
menu ×1
mysql ×1
permissions ×1
preg-match ×1
private-key ×1
regex ×1
ssh ×1
ssh-keys ×1
travis-ci ×1