with()
和compact()
之间有什么区别吗?
哪一个更有效率?
答案 0 :(得分:4)
with()
是一个Laravel函数,compact()
是一个PHP函数,用途完全不同。
with()
允许您将变量传递给视图,compact()
从作为字符串参数给出的现有变量创建数组。
有关此问题的更多信息,请参阅compact()。
答案 1 :(得分:2)
with()
是一种方法,可以通过其中一个类提供,而compact()
是一种默认情况下可用的方法PHP
with()
无法在外部使用laravel但compact()
可以在PHP
脚本中的任何位置使用。
compact()
函数用于将给定变量转换为数组,其中数组的键将是变量的名称,数组的值将是变量的值。
答案 2 :(得分:0)
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');