小编lui*_*s90的帖子

原则2:批处理插入引用其他实体的实体时的奇怪行为

我正在尝试这里描述的批处理方法:http: //docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/batch-processing.html

我的代码看起来像这样

    $limit = 10000;
    $batchSize = 20;
    $role = $this->em->getRepository('userRole')->find(1);
    for($i = 0; $i <= $limit; $i++)
    {
        $user = new \Entity\User;
        $user->setName('name'.$i);
        $user->setEmail('email'.$i.'@email.blah');
        $user->setPassword('pwd'.$i);
        $user->setRole($role);
        $this->em->persist($user);
         if (($i % $batchSize) == 0) {
             $this->em->flush();
             $this->em->clear();
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是,在第一次调用em-> flush()之后,$ role也会被分离,并且每20个用户创建一个带有新id的新角色,这不是我想要的

这种情况有没有可用的解决方法?只有一个我可以做的工作是每次在循环中获取用户角色实体

谢谢

php bulkinsert doctrine-orm

6
推荐指数
1
解决办法
2634
查看次数

查找包含给定数字的所有间隔

我有一个可能重叠的间隔列表.然后,我有一个值,问题是找到包含该值的所有区间,值本身是包容性的.我见过几种方法,包括范围树,KD树等.但是,我想知道是否有针对此问题的特定优化解决方案,考虑到:

  1. 间隔列表很长.(可能是50K或更多).
  2. 间隔可能重叠.
  3. 一旦我们开始查询,间隔列表就不会改变.
  4. 列表一旦形成,就会以不同的值查询很多次.

有人可以建议一些方法来解决这个问题.提前致谢.

algorithm data-structures

4
推荐指数
1
解决办法
1490
查看次数

setOnKeyListener没有响应

我是Android的新手,并且通过书中的待办事项列表示例.我有一个Activity在其下面显示EditText和ListView.有一个onKey事件,它应该将EditText中的文本添加到ListView并清除EditText.但是,当我在键盘上按Enter键时,所有发生的事情都是在EditText中添加一个新行,并且没有任何内容添加到ListView中.

onCreate代码是:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_to_do_list);

    // Get UI references
    ListView myListView = (ListView)findViewById(R.id.myListView);
    final EditText myEditText = (EditText)findViewById(R.id.myEditText);
    myEditText.setText("test");
    // Create ArrayList to store To Do items
    final ArrayList<String> toDoItems = new ArrayList<String>();

    // Create ArrayAdapter to bind items to List View
    final ArrayAdapter<String> aa;

    aa = new ArrayAdapter<String>(this,
                                  android.R.layout.simple_list_item_1,
                                  toDoItems);

    // Bind Adapter to List View
    myListView.setAdapter(aa);

    myEditText.setOnKeyListener(new View.OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN)
                if …
Run Code Online (Sandbox Code Playgroud)

android

4
推荐指数
2
解决办法
1万
查看次数

PDO准备语句中的参数号无效

我正在使用PDO类创建的一系列查询,在某些情况下,我的查询需要相同的参数.我已经创建了一个在foreach语句中使用的数组,它保存数据,但是一些变量来自外部,我可以在一个查询中使用这两个数据吗?

这个例子:

// $connection is the PDO object;
// $full_data contains:
// $full_data[$i]["address"]
// $full_data[$i]["phone"]
// $full_data[$i]["email"]
// $full_data[$i]["user_id"]
// $full_data[$i]["surname"] // not used but present
// $full_data[$i]["name"] // not used but present

$sql = "UPDATE users_table SET city = :address, phone = :phone, email = :email, admin_id = :admin_id, admin_name = :admin_name WHERE user_id = :user_id";
$statement = $connection->prepare ($sql);


$statement->bindParam (':admin_id', trim($admin_id), PDO::PARAM_INT);
$statement->bindParam (':admin_name', trim($admin_name), PDO::PARAM_STR);


foreach ($full_data as $value) {
    $ok = $statement->execute ($value);
    $num = …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo exception

3
推荐指数
1
解决办法
2万
查看次数

在将日期传递给strtotime()之前,如何使日期合法/安全?

这就是我现在拥有的.

$date = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime($_POST['date']))));
Run Code Online (Sandbox Code Playgroud)

有人告诉我,$date在传递之前我需要确保它是安全/合法的strtotime().我怎么做?我查了一下http://us3.php.net/strtotime但它真的没告诉我我在想什么.

有人可以用更详细的方式向我解释如何清洁提交到strtotime吗?

php sanitization strtotime

3
推荐指数
1
解决办法
454
查看次数

编程逻辑最佳实践 - 冗余检查

我正在创建一个大型的PHP项目,我对如何继续进行一个微不足道的疑问.

假设我们有一个类books,在这个类我有方法ReturnInfo:

function ReturnInfo($id) {
    if( is_numeric($id) ) {
        $query = "SELECT * FROM books WHERE id='" . $id . "' LIMIT 1;";

        if( $row = $this->DBDrive->ExecuteQuery($query, $FetchResults=TRUE) )   {  
                return $row;
        } else {
            return FALSE;
        }
    } else {
        throw new Exception('Books - ReturnInfo - id not valid.');          
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我有另一种方法 PrintInfo

function PrintInfo($id) {
    print_r( $this->ReturnInfo($id) );
}
Run Code Online (Sandbox Code Playgroud)

显然,代码示例仅是示例,而不是实际的生产代码.

在第二种方法中,我应该(再次)检查id是否为数字?或者我可以跳过它,因为在第一种方法中已经注意了,如果它不是异常将被抛出?

直到现在我总是用冗余支票编写代码(无论是否已在其他地方检查过,我也会在这里查看)

有最好的做法吗?只是常识吗?

提前感谢您的回复.

php logic coding-style

3
推荐指数
1
解决办法
420
查看次数

PHP循环不根据div颜色代码打印颜色名称

我试图根据循环中的颜色代码回显div的颜色名称,但它似乎没有工作.这就是我得到的:

在此输入图像描述

框的颜色应与其中的文本相关联.有什么我做错了吗?到目前为止这是我的代码:

$availColour = array("#F00","#FF0","#0D0");

for ($i = 1; $i <= 9; $i++) {
    $Monday = $availColour[array_rand($availColour, 1)];        
    echo '<div class="innerTbl" style="width: 50px; float: left; 
    background-color: '.$Monday.'">';
    if ($Monday = "#F00") {
        echo "Red";
    }
    elseif ($Monday = "#FF0") {
        echo "Green";
    }
    elseif ($Monday = "#0D0") {
        echo "Yellow";
    }
    echo "</div>";
Run Code Online (Sandbox Code Playgroud)

php

1
推荐指数
1
解决办法
434
查看次数

如何让Symfony2直接读取php本地会话

我有一个Symfony2应用程序,我必须从另一个非symfony应用程序中读取会话集.

非symfony应用程序$_SESSION像往常一样将会话设置为.

但是,当我尝试读取此会话时,数据不存在.无论我做到了

$session = $this->get('request')->getSession();
var_dump($session->all());
Run Code Online (Sandbox Code Playgroud)

甚至(我知道我不应该这样做,但无论如何)

var_dump($_SESSION);
Run Code Online (Sandbox Code Playgroud)

这给了我会话已经启动错误,我不知道为什么有错误,尽管我从未在Symfony应用程序中启动会话.告诉我这种方式是否真的有用,这样我就可以调查一下session_start().

$session = new Session();
$session->start();
var_dump($session->all());
Run Code Online (Sandbox Code Playgroud)

PHPSESSIDcookie被在Symfony2的应用程序设置,它的值是一样的,在非symfony的应用程序设置Cookie,但我的Symfony2应用程序只是拒绝读入会话的内容.($session->getName()返回PHPSESSID,要清楚)

(确切地说,两个应用程序都在相同的域下,但不同的子域,我已经在Symfony应用程序中framework.session.domain正确设置app/config.yml并调用session_set_cookie_params非symfony应用程序具有相同的域设置以允许在子域之间共享会话cookie,即.example.com)

那么如何阅读由非symfony应用程序设置的Symfony2应用程序/控制器中的会话?谢谢.

如果这很重要,我正在使用Symfony 2.1.

session symfony

1
推荐指数
1
解决办法
3159
查看次数

在学说查询中使用multiple - > select()

对于一个学说模型,我并不总是需要获取所有列.我希望我可以解决这个问题

$query = Doctrine_Query::create()->select('a');  
if (!empty($value)){    
    $query->select('b');    
}  
$query->execute();
Run Code Online (Sandbox Code Playgroud)

但这不起作用......

有没有人知道如何做到这一点?

php mysql doctrine model

0
推荐指数
1
解决办法
2906
查看次数