我正在尝试这里描述的批处理方法: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的新角色,这不是我想要的
这种情况有没有可用的解决方法?只有一个我可以做的工作是每次在循环中获取用户角色实体
谢谢
我有一个可能重叠的间隔列表.然后,我有一个值,问题是找到包含该值的所有区间,值本身是包容性的.我见过几种方法,包括范围树,KD树等.但是,我想知道是否有针对此问题的特定优化解决方案,考虑到:
有人可以建议一些方法来解决这个问题.提前致谢.
我是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) 我正在使用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) 这就是我现在拥有的.
$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项目,我对如何继续进行一个微不足道的疑问.
假设我们有一个类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是否为数字?或者我可以跳过它,因为在第一种方法中已经注意了,如果它不是异常将被抛出?
直到现在我总是用冗余支票编写代码(无论是否已在其他地方检查过,我也会在这里查看)
有最好的做法吗?只是常识吗?
提前感谢您的回复.
我试图根据循环中的颜色代码回显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) 我有一个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.
对于一个学说模型,我并不总是需要获取所有列.我希望我可以解决这个问题
$query = Doctrine_Query::create()->select('a');
if (!empty($value)){
$query->select('b');
}
$query->execute();
Run Code Online (Sandbox Code Playgroud)
但这不起作用......
有没有人知道如何做到这一点?
php ×6
mysql ×2
algorithm ×1
android ×1
bulkinsert ×1
coding-style ×1
doctrine ×1
doctrine-orm ×1
exception ×1
logic ×1
model ×1
pdo ×1
sanitization ×1
session ×1
strtotime ×1
symfony ×1