【发布时间】:2017-12-11 08:17:22
【问题描述】:
with() 和 compact() 有什么区别吗?
哪个效率更高?
【问题讨论】:
-
你应该更清楚到底是哪些功能laravel.com/api/5.4/search.html?search=with
标签: laravel difference
with() 和 compact() 有什么区别吗?
哪个效率更高?
【问题讨论】:
标签: laravel difference
with() 是 Laravel 函数,compact() 是 PHP 函数,用途完全不同。
with() 允许您将变量传递给视图,compact() 从作为字符串参数给出的现有变量创建一个数组。
有关此问题的更多信息,请参阅compact()。
【讨论】:
with() 是由它们的一个类中的方法提供的方法,而 compact() 是默认情况下在 PHP 中可用的方法 with() 不能在 laravel 外部使用,但 compact() 可以在PHP 脚本中的任何地方使用。
compact()函数用于将给定的变量转换为数组,其中数组的键为变量名,数组的值为变量的值。
【讨论】:
compact— 创建包含变量及其值的数组
compact() 接受可变数量的参数。每个参数可以是包含变量名称的string,也可以是变量名称的array。数组中可以包含其他数组变量名; compact() 递归处理它。
with() 可以让您进行预加载。有时您可能需要在一次操作中预先加载多个不同的关系。
为此,您只需将其他参数传递给 with 方法:
$userss = App\User::with(['name', 'email'])->get();
当您想将多个变量传递到视图中时一种方法是使用数组将它们传递到 with 方法:
public function index()
{
$data = array('name' => 'some one',
'email' => 'someone@gmail.com',
'date' => date('Y-m-d'));
return view('welcome')->with($data);
}
您也可以使用多个 with 方法,如下所示:
return view('welcome')->with('name', 'some one')->with('email','someone@gmail.com)->with('date', date('Y-m-d'));
如果您需要传递两个以上的变量。您可以使用 PHP 的 compact() 函数节省一些输入:
$name = 'some one';
$email= 'someone@gmail.com';
$date = date('Y-m-d');
return view('welcome', compact('name','email', 'date'));
或者,如果您需要将多个数组传递给一个视图,您可以使用 compact() 函数:
$array1 = ... ;
$array2 = ... ;
$array3 = ... ;
return view('welcome', compact('array1', 'array2', 'array3');
【讨论】: