在IEX中别名模块/ namepsace的所有内容

时间:2015-12-29 04:03:30

标签: elixir phoenix-framework mix iex

根据this question中有关如何使用当前项目的依赖项加载iex的建议,我能够以非常高效的方式使用phoenix框架依赖项。但是,为每一件事提供Phoenix项目的命名空间都会有点乏味。

而不是键入$sql= "SELECT p.productid, GROUP_CONCAT(p.prodsize ORDER BY p.id ASC) as size, GROUP_CONCAT(p.cost ORDER BY p.id ASC) as cost, GROUP_CONCAT(c.prodsize,'-',c.quantity) as cart_details FROM productsize p LEFT JOIN cart c ON(c.productid = p.productid AND p.prodsize = c.prodsize) GROUP BY p.productid ORDER BY p.productid ASC"; $result = mysql_query($sql); if (mysql_num_rows($result) > 0) { $i = 0; while($row = mysql_fetch_assoc($result)) { $purchasedData = array(); $purchasedsize = $purchasedquantity = $final_size = $final_cost = array_fill(0, 4, '0'); $size = explode(',', $row['size']); $cost = explode(',', $row['cost']); $cart_details = explode(',', $row['cart_details']); foreach($cart_details as $cart) { if($cart != '') { $details = explode('-', $cart); $key = array_search($details[0], $size); $purchasedData[$details[0]] = $details[1]; } } foreach($size as $k => $sizecol) { switch($sizecol) { case 'small': $array_key = '0'; break; case 'medium': $array_key = '1'; break; case 'large': $array_key = '2'; break; case 'perpiece': $array_key = '3'; break; } $final_size[$array_key] = $sizecol; $final_cost[$array_key] = $cost[$k]; if ($purchasedData[$sizecol]) { $purchasedsize[$array_key] = $sizecol; $purchasedquantity[$array_key] = $purchasedData[$sizecol]; } } $rows[$i]['productid'] = $row['productid']; $rows[$i]['size'] = $final_size; $rows[$i]['cost'] = $final_cost; $rows[$i]['purchasedsize'] = $purchasedsize; $rows[$i]['purchasedquantity'] = $purchasedquantity; $rows[$i]['userid'] = $row['user_id']; $i++; } } echo "<pre>"; print_r($rows); echo "</pre>"; 我希望能够MyApp.Repo.all(MyApp.User)。我可以使用Repo.all(User)单独为每个事物添加别名,但有没有办法一次性完成所有事情?

1 个答案:

答案 0 :(得分:12)

您只需拨打alias MyApp.Repo而不是MyApp.Repo, as: Repo - 它将使用模块名称的最后一部分。

在Elixir 1.2中,您可以通过一次调用将多个子模块别名为自己的名称:alias MyApp.{Repo, User}

您还可以选择.iex.exs文件,您可以使用它来设置别名。你可以在http://elixir-lang.org/docs/v1.1/iex/IEx.html阅读它 - 在这种情况下我不推荐它,因为你冒着命名冲突的风险。在iex会话中调用alias更明确。